0

金曜日の午後なので、私はおそらく愚かですが、これを解決することはできません。

私が欲しいのは、ユーザーが無限の「レコード」を追加できるフォームを作ることです。これを行うには、「レコードの追加」ボタンをクリックします。これにより、。内のテーブルに新しい行(tr)を追加するjavascriptが実行されます<form>

この新しい行には、3つの入力フィールドがあります。

私が望んでいるのは、これを次のような形式でpost変数に送信することです(ただし、実行できない場合は正確ではありませんが、より良い方法があります)。

$_POST['record'] = array(
    array(
        "input1" => "value",
        "input2" => "value",
        "input3" => "value"
    ),
    array(
        "input1" => "value",
        "input2" => "value",
        "input3" => "value"
    ),
    array(
        "input1" => "value",
        "input2" => "value",
        "input3" => "value"
    ),
);

次のような名前を使用して配列を取得できることを知っています。

<input type="text" name="record[]" />

ただし、これは1つの入力要素にすぎません。上記のような3つの要素を持つ構造を取得する方法はありますか?

ありがとうございました。

4

4 に答える 4

1

あなたは正しい方向に進んでいると思います。を使用しname=record[]ます。あなたは次のようなものを得るでしょう

$_POST['record'] = array(
    "record" =>  array(
        "value",
        "value",
        "value"
    ),
    "field2" =>  array(
        "value",
        "value",
        "value"
    ),
    "field3" =>  array(
        "value",
        "value",
        "value"
     )
);

したがって、各行を取得するには、

$cnt = count( $theArray['record'] );
for ($x=0; $x<$cnt; $x++){
    echo $theArray['record'][$x];
    echo $theArray['field2'][$x];
    echo $theArray['field3'][$x];
}
于 2012-06-22T15:36:13.370 に答える
1

探しているものを正確に簡単に取得することはできませんが、name="record[input1][]"input2など)を使用すると、次のようになります。

$_POST['record'] = array(
    "input1"=>array(
        "value", "value", "value"
    ),
    "input2"=>array(
        "value", "value", "value"
    ),
    "input3"=>array(
        "value", "value", "value"
    )
);

次に、次のように希望の形式に変換できます。

$out = Array();
foreach(array_keys($_POST['record']['input1']) as $i) {
    foreach($_POST['record'] as $k=>$v) {
        $out[$i][$k] = $v[$i];
    }
}
于 2012-06-22T15:36:34.097 に答える
0

私はちょうど試しました-

<form action="" method="post">
<input type="text" name="record['set1'][]" />
<input type="text" name="record['set1'][]" />
<input type="text" name="record['set1'][]" />
<input type="text" name="record['set2'][]" />
<input type="text" name="record['set2'][]" />
<input type="text" name="record['set2'][]" />
<input type="text" name="record['set3'][]" />
<input type="text" name="record['set3'][]" />
<input type="text" name="record['set3'][]" />
<input type="submit" value="submit" />
</form>

出力-

Array
(
    [record] => Array
        (
            ['set1'] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                )

            ['set2'] => Array
                (
                    [0] => 4
                    [1] => 5
                    [2] => 6
                )

            ['set3'] => Array
                (
                    [0] => 7
                    [1] => 8
                    [2] => 9
                )

        )

)

これはあなたがそれを望んでいた方法ですか?

于 2012-06-22T15:40:58.203 に答える
0

これはあなたにとってより明確になると思います、

$record = array();
foreach($_POST['record'] as $val){
   $record[] = $val;
}
print_r($record);
于 2012-06-22T15:43:08.517 に答える