这是我想出的:
提交多值表单字段(即通过GET / POST var提交数组)可以用几种不同的方式完成,因为不一定要阐明标准。
发送多值字段或数组的三种可能方法是:
?cars[]=Saab&cars[]=Audi
(最佳方法-PHP将其读入数组)
?cars=Saab&cars=Audi
(错误的方式-PHP仅注册最后一个值)
?cars=Saab,Audi
(没有尝试过)
表格范例
在表单上,多值字段可以采用将选择框设置为多个的形式:
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(注意:在这种情况下,命名select控件很重要some_name[]
,这样PHP会将生成的请求vars注册为数组)
...或多个具有相同名称的隐藏字段:
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
注:使用field[]
多个值实在是记录不完整。在查询字符串Wikipedia中关于多值键的部分中,或者在处理多选输入的W3C文档中,我没有看到任何提及。
更新
正如评论者所指出的,这是非常特定于框架的。一些例子:
请求参数:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
滑轨:
"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中的示例注释
保持顺序:
还有一件要考虑的事情是,如果您需要保持项目的顺序(即数组作为有序列表),则实际上只有一个选项,即传递定界的值列表,并将其显式转换为自己数组。