是不是$ _POST数组应该按照DOM的顺序?

时间:2012-08-03 14:41:26

标签: php arrays forms post

我有一个看起来像这样的表格

<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顺序出现

1 个答案:

答案 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]