今天我遇到了一个问题,我将一个值设置为空数组的密钥传递给了http_build_query().例如:
$args = array("foo", "bar", array(), "baz");
$qs = http_build_query($args);
echo $qs; // outputs 0=foo&1=bar&3=baz, I expected 0=foo&1=bar&2=&3=baz
Run Code Online (Sandbox Code Playgroud)
这给我带来了一个问题,因为我通过http将一些数据传递给内部API,我需要在另一端提取所有参数.
好吧,我用Google搜索了这个并提出了以下错误报告:http://bugs.php.net/bug.php?id = 50407.来自管理员的简短回复是,"不设置与将其设置为空相同.没有错误."
有人可以向我解释为什么这不是一个错误?有没有人对解决方法有任何想法,除了在一方设置任意值并将该值解释为另一方的空值的蹩脚黑客?
编辑
这就是我认为这是一个错误的原因:
$args = array("foo", "bar", array(), "baz");
$qs = http_build_query($args);
parse_str($qs, $query);
echo ($args == $query); // false, I expect it to be true
Run Code Online (Sandbox Code Playgroud)
我想我也许天真地考虑parse_str()并http_build_query()相互颠倒.
我正在发布我目前的"蹩脚黑客"解决方案作为下面的答案.
有人可以向我解释为什么这不是一个错误吗?
从技术上讲,我认为它不应该被标记为错误。相反,这只是他们设计函数的行为方式,无论其他人是否不同意这个决定。
你的 API 可以直接检查if (empty($_POST['2']))
| 归档时间: |
|
| 查看次数: |
6415 次 |
| 最近记录: |