没有参数值的http_build_query

时间:2019-03-21 14:42:54

标签: php url

PHP函数http_build_query对于使用GET参数构建URL非常方便。但是有时候我喜欢使用无值的“布尔”参数,就像这样:

/mypage?subscription-id=42&cancel-renewal

然后我用简单的isset检查一下。我可以用http_build_query来达到这个结果吗?

编辑:向参数分配空值似乎不起作用:

  • cancel-renewal => ''产生cancel-renewal=
  • cancel-renewal => null导致参数被省略
  • cancel-renewal => false产生cancel-renewal=0

2 个答案:

答案 0 :(得分:1)

  

我可以使用http_build_query达到此结果吗?

不。内部http_build_query会附加=键值分隔符,无论参数的值是多少。 您可以看到源代码here(PHP 7.3.3)

意味着您要么需要接受参数的cancel-renewal=外观,要么可以将路径重新设计为类似/mypage/cancel-renewal?subscription-id=42

第三种选择是编写自己的简单函数来构建查询字符串。

答案 1 :(得分:0)

使用它;

$query = array("subscription-id" => 42, "cancel-renewal" => "");
$http_query = http_build_query($query);

这将返回?subscription-id=42&cancel-renewal=。并且可以与isset()

完美配合