私はこのようなフォームを持っています
<table class="audio_channels">
<tbody>
<tr class="channel">
<td>
<label>Field1</label><br>
<select name="value[][field1]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field2</label><br>
<select name="value[][field2]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field3</label><br>
<select name="value[][field3]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field4</label><br>
<select name="value[][field4]">
<option value="option">option</option>
</select>
</td>
</tr>
</tbody>
<tbody>
<tr class="channel">
<td>
<label>Field1</label><br>
<select name="value[][field1]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field2</label><br>
<select name="value[][field2]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field3</label><br>
<select name="value[][field3]">
<option value="option">option</option>
</select>
</td>
<td>
<label>Field4</label><br>
<select name="value[][field4]">
<option value="option">option</option>
</select>
</td>
</tr>
</tbody>
<tbody>
</tbody>
</table>
動的に追加されたフィールドを自動インクリメントするために使用[]
していますが、あるフォームではうまく機能していましたが、別のフォームでは var_dump は$_POST['value']
次のようになります。
array(8) {
[0]=>
array(1) {
["field1"]=>
string(6) "option"
}
[1]=>
array(1) {
["field1"]=>
string(6) "option"
}
[2]=>
array(1) {
["field2"]=>
string(6) "option" }
[3]=>
array(1) {
["field2"]=>
string(6) "option" }
[4]=>
array(1) {
["field3"]=>
string(6) "option" }
[5]=>
array(1) {
["field3"]=>
string(6) "option" }
[6]=>
array(1) {
["field4"]=>
string(6) "option" }
[7]=>
array(1) {
["field4"]=>
string(6) "option" }
}
行単位ではなく、フィールド 1、フィールド 1、フィールド 2、フィールド 2 .. に注意してください (ドキュメントの他の場所で発生しています)。
なぜこうなった?私が読んだことはすべて、DOM に表示される順序で $_POST 変数に入れる必要があると述べていますが、これはそうではないようです。
確かにインクリメントキーをハードコーディングする必要があるかもしれませんが、私が読んだすべてがDOMの順序であるべきであることを示唆しているのに、なぜこのようになるのか興味があります