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

标签 php arrays query-string querystringparameter

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

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

另外,据此post answer ,作者建议未定义对数组的查询字符串支持。这准确吗?

编辑:

根据@Alex 的回答,没有标准的方法可以做到这一点,所以我的后续行动是识别我正在读取的参数是一个数组的简单方法PHPJavascript

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

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

或者这是一个不好的做法?

最佳答案

这是我想出来的:

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

(注意:在这种情况下,将选择控件命名为 some_name[] 很重要,这样生成的请求变量将被 PHP 注册为数组)

...或作为多个具有相同名称的隐藏字段:

<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">

注意:field[] 用于多个值的文档确实很少。我在 Query string - Wikipedia 中的多值键部分中没有看到任何提及。 ,或在 W3C docs处理多选输入。


更新

正如评论者所指出的,这在很大程度上是特定于框架的。一些例子:

查询字符串:

?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"

(角度 discussion )

查看 node.jsWordpressASP.net

中示例的评论

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

关于php - 如何在查询字符串中传递数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243051/

相关文章:

php - 将 JS LocalStorage 加载到 PHP 变量中

javascript - Reactjs 设置状态动态键 Javascript

reactjs - Nextjs 如何将多个路由映射到一个页面?

string - MYSQL:将 GROUP BY 与字符串文字一起使用

javascript - 使用 PHP 从 JavaScript 程序中的对象文字中提取数据

php - 通过 SDK 检索 Paypal 计划给出错误代码 400 - 无请求负载

php - 干净的 URL - 我该如何实现这一点?

python - 除以包含零的数组,python

javascript - 二维数组到对象 (JavaScript)

asp.net-mvc-2 - asp.net MVC 2 中的查询字符串格式