1

ロジックがこれでどのように機能するかは正確にはわかりません。私の脳は揚げられており、はっきりと考えることができません。

いくつかのPOSTデータを処理していますが、この配列のフィールドの1つは数量文字列です。この文字列を読み取って、処理する必要のあるウィジェットが複数あるかどうかを判断できます。

if($quantity <= 1){ //$_POST[widget1] }

ここで、4つのウィジェットがあるとします。数量フィールドにはこの数値が反映されますが、どのようにループして新しい配列に割り当てるのでしょうか。

$_POST[widget1], $_POST[widget2], $_POST[widget3], $_POST[widget4]

その数量番号を取得し、それを使用して、ある種のワイルドカードやプレフィックスなどを使用して、post配列からその数と特定の名前付きアイテムを取得するにはどうすればよいですか?これが、、、、forまたはwhileどのような操作なのかわかりません。$ _POST ['widget * X *']をループするにはどうすればよいですか。ここで、Xは数量番号です。

最終結果は、次のように構造化された配列を探しています。

$widgets[data1]
$widgets[data2]
$widgets[data3]
$widgets[data4]
4

2 に答える 2

5

ループを使用すると、次のように変数でキーにforアクセスできます。$_POST$_POST["widget$i"]

$widgets = array();
for ($i=1; $i<=$quantity; $i++) {
  // Append onto an array
  $widgets[] = $_POST["widget$i"];
}

ただし、より良い長期的な解決策は[]、フォーム入力のname属性に追加することにより、最初に配列を PHP に戻すように HTML フォームを変更することです。

<input type='text' name='widgets[]' id='widget1' value='widget1' />
<input type='text' name='widgets[]' id='widget2' value='widget2' />
<input type='text' name='widgets[]' id='widget3' value='widget3' />

を介して PHP でアクセスすると$_POST['widgets']、すでに配列になっています!

var_dump($_POST['widgets']);
于 2012-08-13T20:50:43.377 に答える
2

アイテムの数、少なくとも1つを繰り返します(あなたが説明したように):

$widgets = array();
foreach (range(1, max(1, $quantity)) as $item)
{
    $name = sprintf('widget%d', $item);
    $data = sprintf('data%d', $item);
    $widget = $_POST[$name];
    // do whatever you need to do with that $widget.
    $widgets[$data] = $widget;
}
于 2012-08-13T20:52:38.273 に答える