当有两个具有相同名称的HTTP GET参数时的行为

时间:2014-07-07 14:41:52

标签: php http

假设您的HTTP请求格式如下:

GET /path/to/file.php?var[]=1&var[]=2

PHP会将其填充到名为$_GETarray('var' => array(1, 2))

的数组中

我的问题是......这是一个PHP的事情还是这个行为受RFC控制? Web可访问的node.js或Python脚本如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

默认情况下,PHP会覆盖以前的值,最终会在查询字符串中找到LAST键:值对。但在PHP中,您可以使用[]数组作为fieldname hack:

  1. example.com?foo=bar&foo=baz&foo=qux
  2. example.com?foo[]=bar&foo[]=baz&foo[]=qux
  3. 第1行产生$ _GET,如下所示:

    $_GET = array(
        'foo' => 'qux'
    );
    

    第2行产生

    $_GET['array'] = array
       'foo' => array('bar', 'baz', 'qux');
    }
    

    请注意,此行为是特定于PHP的。其他语言做自己的事情。据我所知,Perl默认会将所有值保存为数组。

答案 1 :(得分:1)

这是PHP的一个特定功能,没有相关的RFC或其他规范。我找不到任何具体的声明,但阅读此常见问题Q / A似乎意味着相同:

http://docs.php.net/manual/en/faq.html.php#faq.html.arrays