1

このコードを機能させることができません。投稿された変数に応じて配列を取得する必要があります。明らかだと思いますが、解決策が見つかりません。

$choice1 =
    array (
        'order' => array (1,2,3,4,5),
            'settings' => (1,0,1)
    );
$choice2 =
    array (
        'order' => array (1,5,3,2,4),
            'settings' => (0,0,0)
    );
if(isset($_POST['choice'])) {
    $template_to_get = $_POST['choice'];
    $order_display = $template_to_get['order'];          // Here is the problem
    echo json_encode(array('order' => $order_display));
}

また試しました:

$order_display = $$template_to_get['order'];
$order_display = "$".$template_to_get['order'];
...

この行を書くと機能しますが、投稿されるのがchoice1かchoice2かはわかりません。

$order_display = $choice1['order'];

(1,2,3,4,5) 配列を出力として取得したいと思います。(私は単純化しましたが、約20の選択肢がありますX)

ありがとう!

4

4 に答える 4

2

私はあなたの選択を単一の num インデックス付き配列にグループ化し、可変変数の匂いを追加しません:

$choices = array(
    1 => array(
        'order' => array (1,5,3,2,4),
        'settings' => (0,0,0),
    ),
    2 => array(
        'order' => array (1,2,3,4,5),
        'settings' => (1,0,1)
    ),
);

if(isset($_POST['choice'])) {
    $template_choice = $_POST['choice'];
    echo json_encode(array('order' => $choices[ $template_choice ]['order'] ));
}

または非常に近いもの。

編集: $_POST['choice'] に文字列を投稿している場合、同じことが完全にうまく機能することに注意してください。たとえば、「template_1」を投稿して一致させることができます。

$choices = array(
    'template_1' => array( ... );
    ...
);

乾杯

于 2012-06-10T17:27:01.183 に答える
1

ここで何が欲しいかを理解するのは少し難しいですが、これだと思います

$order_display = $choice1[$_POST['choice']];
于 2012-06-10T14:14:26.277 に答える
0
$varname = 'choice' . $_POST['choice'];
$order_display = $$varname['order'];
于 2012-06-10T14:24:22.230 に答える
0
foreach ($choice as $key => $val)
foreach ($val as $nval)
  echo $key . ' : ' . $nval . '<br />';
于 2012-06-10T14:19:41.823 に答える