是否有通过查询字符串传递数组的标准方法
需要说明的是,我有一个包含多个值的查询字符串,其中一个是数组值。我希望该查询字符串值被视为一个数组-我不希望该数组被分解,使其与其他查询字符串变量无法区分
此外,根据这篇文章的回答,作者建议没有定义对数组的查询字符串支持。这准确吗
编辑:
根据@Alex的回答,没有标准的方法可以做到这一点,因此我的后续工作是如何识别我正在读取的参数是PHP和Javascript中的数组
是否可以将多个参数命名为相同的名称,这样我就知道它们属于一个数组?例如:
?myarray=value1&;myarray=value2&;myarray=value3。。。
或者这是一种不好的做法
以下是我得出的结论:
提交多值表单字段,即通过GET/POST vars提交数组,可以通过几种不同的方式完成,因为不一定要说明标准
发送多值字段或数组的三种可能方式是:
?汽车[]=萨博&;cars[]=Audi(最佳方式-PHP将其读入数组)?汽车=萨博&;cars=Audi(坏方法-PHP将只注册最后一个值)?cars=Saab,Audi(还没试过)
举例
在表单上,多值字段可以采用设置为多个的选择框的形式:
<;表格>;
<;选择multiple=“multiple”name=“cars[]”gt;
<;选项>;沃尔沃</选项>;
<;选项>;萨博</选项>;
<;选项>;梅赛德斯</选项>;
</选择>;
</表格>;
(注意:在这种情况下,将select控件命名为some\u name[],以便生成的请求变量将由PHP注册为数组,这一点很重要)
。。。或作为具有相同名称的多个隐藏字段:
<;输入type=“hidden”name=“cars[]”value=“Volvo”>;
<;输入type=“hidden”name=“cars[]”value=“Saab”>;
<;输入type=“hidden”name=“cars[]”value=“Mercedes”>;
注意:对多个值使用字段[]的记录非常糟糕。在查询字符串-Wikipedia中的多值键部分,或者在处理多选输入的W3C文档中,我没有看到任何提到它的内容
更新
正如评论者所指出的,这是非常特定于框架的。一些例子:
查询字符串:
?列表a=1&;列表a=2&;列表a=3&;列表b[]=1&;列表b[]=2&;列表b[]=3&;列表c=1,2,3
轨道:
“列表a”:“3”,
“列表b”:[
"1",
"2",
"3"
],
“列表c”:“1,2,3”
角度:
“列表a”:[
"1",
"2",
"3"
],
“列表_b[]”:[
"1",
"2",
"3"
],
“列表c”:“1,2,3”
(角度讨论)
有关示例,请参见node.js,WordPress,ASP.net
维持秩序:
还有一件事要考虑的是,如果需要维护项目的顺序(即数组作为有序列表),则实际上只有一个选项,即传递一个分隔的值列表,并将其显式转换为一个数组。