我可能发现了一个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 =
这是什么原因?如何解决这个问题?
答案 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的密钥或仍然按原样使用它。