以下是我的结论:
提交多值表单字段,即通过GET/POST变量提交数组,可以通过几种不同的方式完成,因为没有必要详细说明标准。
发送多值字段或数组的三种可能的方法是:
?cars[]=Saab&cars[]=Audi (PHP将此读入数组的最佳方式)
?cars=Saab&cars=Audi(不好的方法- PHP只会记录最后一个值)
?汽车=萨博,奥迪(还没试过)
形式的例子
在表单中,多值字段可以采用选择框的形式设置为多个:
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(注意:在这种情况下,将选择控件命名为some_name[]非常重要,这样得到的请求vars将被PHP注册为一个数组)
... 或多个相同名称的隐藏字段:
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
注意:使用field[]表示多个值的文档很少。在维基百科中关于查询字符串的多值键的部分,或者在W3C文档中处理多选择输入的部分,我没有看到任何提到它。
更新
正如评论者所指出的,这是非常特定于框架的。一些例子:
查询字符串:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Rails:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
角:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
(角)的讨论
参见node.js, Wordpress, ASP.net中的示例注释
维持秩序:
还有一件事要考虑的是,如果你需要维护你的项目的顺序(即数组作为一个有序的列表),你实际上只有一个选项,这是传递一个分隔的值列表,并显式地转换为一个数组自己。