【发布时间】:2018-03-07 08:52:56
【问题描述】:
我可能发现了一个 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%5B0%5D=
这是什么原因?如何解决这个问题?
【问题讨论】:
-
请提供一个复制案例(例如,您发现问题所在的 $_GET 的值)。似乎不太可能是一个错误。
-
如果我没看错,那是完全合理的。您的子数组不能有没有索引的值,所以它按照我的预期放入索引。
-
在应用该函数之前,我从未操作过 $_GET 的内容。那么怎么会自动添加索引 0 呢?
-
抱歉,您的评论没有任何意义。
-
试试
var_dump($_GET);,看看它能给你什么。您会看到已经为arrayName项目自动生成了一个索引(应该如此)。当您使用http_build_query时,索引也会被放入,因为这是唯一有意义的事情。我不知道该怎么解释这个......