我有一个看起来像这样的表格
<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>
我正在使用[]
自动增加动态添加的字段,并且它在一个表单上工作得很好,但在另一个表单中,$_POST['value']
的var_dump看起来像:
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" }
}
注意field1,field1然后是field2,field2 ..而不是按行(在文档的其他地方发生。)
为什么会这样?我所读到的所有内容都表明应该按照它们在DOM中出现的顺序将事物放入$ _POST变量中,这似乎不会这样做。
我可能不得不对增量键进行硬编码以确定,但我很好奇为什么它会以这种方式出现,因为我读过的所有内容都暗示它应该以DOM顺序出现
答案 0 :(得分:2)
更改
value[][fieldX]
到
value[fieldX]
也许您需要将值分组为:
value[groupX][fieldX]
E.g。
value[row1][field1]
value[row1][field2]
value[row1][field3]
value[row2][field1]
value[row2][field2]
value[row2][field3]