PHP http_build_query()为数组get参数生成不正确的url

时间:2018-03-07 08:52:56

标签: php arrays url get

我可能发现了一个PHP函数http_build_query()的错误。

我正在开发一个具有动态形式的搜索引擎,其中一些参数是数组。

我只需使用http_build_query()从当前的$ _GET获取查询URL。 但是所有这些数组参数都是自动从" arrayName%5B%5D"生成新查询中的" arrayName%5B0%5D"

$queryStr = http_build_query($_GET);
  

原始网址

     

&安培; arrayName中%5B%5D =

     

来自http_build_query()的新查询字符串:

     

&安培; arrayName中%5B的 0 %5D =

这是什么原因?如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

它不是http_build_query()函数的错误。

当您通过以下网址传递get参数时:" arrayName [] ="

print_R($_GET);

将返回

Array
(
    [arrayName] => Array
        (
            [0] => 
        )

)

http_build_query从数组生成url编码的字符串,结果为:

&arrayName%5B0%5D=

并解码后看起来像:

arrayName[0]=

现在你可以看到0来自哪里:)

无需修复此问题,您可以更改代码以传递arrayName的密钥或仍然按原样使用它。