在HTML表单中提交的数组的预期顺序是什么?

jhc*_*hen 10 html javascript php forms

我想知道我将在服务器端看到的POST变量的顺序是否有任何形式的保证.

我的用例是我有一个表单,用户将填写该表单以输入姓名和电子邮件列表.我正在使用表行,每行有两个输入:

<table>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
<tr>
<td><input type='text' name='name[]' /></td>
<td><input type='text' name='email[]' /></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

该行可能通过javascript克隆,以允许用户输入更多的名称和电子邮件,因此我不会提前知道将提交多少.

在服务器端,我看到$ _POST ['email']和$ _POST ['name']设置,但我想知道我是否可以安全地假设$ _POST ['email'] [0]将对应$ _POST ['name '] [0],$ _POST ['email'] [1]将对应$ _POST ['name'] [1],依此类推.一些基本测试似乎表明是,但我想知道是否有保证或我是否只是幸运.

pro*_*son 13

为什么不添加分组键,如:

<td><input type='text' name='user[0][name]' /></td>
<td><input type='text' name='user[0][email]' /></td>
</tr>
<tr>
<td><input type='text' name='user[1][name]' /></td>
<td><input type='text' name='user[1][email]' /></td>
Run Code Online (Sandbox Code Playgroud)

然后manuall user根据当前数字克隆时设置索引.这样一切都已经合并了.


web*_*ave 9

在HTML表单中提交的数组的预期顺序是什么?

根据HTML规范:

控件名称/值按它们在文档中出现的顺序列出

http://www.w3.org/TR/html401/interact/forms.html#form-content-type

然而,如prodigitals的答案所示,使用索引数组方法是更好的编码实践.