如何在查询字符串中传递数组?

是否有通过查询字符串传递数组的标准方法

需要说明的是,我有一个包含多个值的查询字符串,其中一个是数组值。我希望该查询字符串值被视为一个数组-我不希望该数组被分解,使其与其他查询字符串变量无法区分

此外,根据这篇文章的回答,作者建议没有定义对数组的查询字符串支持。这准确吗

编辑:

根据@Alex的回答,没有标准的方法可以做到这一点,因此我的后续工作是如何识别我正在读取的参数是PHPJavascript中的数组

是否可以将多个参数命名为相同的名称,这样我就知道它们属于一个数组?例如:

?myarray=value1&myarray=value2&myarray=value3。。。

或者这是一种不好的做法

以下是我得出的结论:

提交多值表单字段,即通过GET/POST vars提交数组,可以通过几种不同的方式完成,因为不一定要说明标准

发送多值字段或数组的三种可能方式是:

  • ?汽车[]=萨博&cars[]=Audi(最佳方式-PHP将其读入数组)
  • ?汽车=萨博&cars=Audi(坏方法-PHP将只注册最后一个值)
  • ?cars=Saab,Audi(还没试过)

举例

在表单上,多值字段可以采用设置为多个的选择框的形式:

<表格>
<选择multiple=“multiple”name=“cars[]”gt;
<选项>沃尔沃&lt/选项>
<选项>萨博&lt/选项>
<选项>梅赛德斯&lt/选项>
&lt/选择>
&lt/表格>

(注意:在这种情况下,将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.jsWordPressASP.net


维持秩序:
还有一件事要考虑的是,如果需要维护项目的顺序(即数组作为有序列表),则实际上只有一个选项,即传递一个分隔的值列表,并将其显式转换为一个数组。

发表评论