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

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

需要明确的是,我有一个带有多个值的查询字符串,其中一个是数组值。我希望将该查询字符串值视为一个数组-我不希望该数组爆炸,以使其与其他查询字符串变量没有区别。

根据@Alex的答案,没有标准的方法可以执行此操作,因此我的后续工作是什么才是 识别 我正在读取的参数同时是 和

数组的简单方法?

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

?myarray=value1&myarray=value2&myarray=value3...

还是这是不好的做法?

回答:

这是我发现的:

提交多值表单字段(即通过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"

(角度讨论)

请参阅 , 示例注释 *


还有一件要考虑的事情是,如果您需要保持项目的 顺序

(即数组作为有序列表),则实际上只有一个选项,即传递定界的值列表,并将其显式转换为自己数组。

以上是 如何在查询字符串中传递数组? 的全部内容, 来源链接: utcz.com/qa/408177.html

回到顶部