以下是我的发现:
提交多值表单字段,即通过GET /POST vars提交数组,可以通过几种不同的方式完成,因为标准不一定拼写出来。
发送多值字段或数组的三种可能方法是:
-
?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[]
非常重要,这样生成的请求 vars 将被 PHP 注册为数组)
...或作为具有相同名称的多个隐藏字段:
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
注意:用于多个值的记录确实很差。我在查询字符串 - 维基百科中的多值键部分或处理多选输入的W3C文档中没有看到任何提及它的内容。field[]
更新
正如评论者所指出的那样,这是非常特定于框架的。一些例子:
查询字符串:
?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 中的示例,请参阅注释
维持秩序:需要考虑的另一件事是,如果您需要维护项目的顺序(即数组作为有序列表),您实际上只有一个选项,即传递分隔的值列表,并自己将其显式转换为数组。