在PHP中检查null和缺少的查询字符串参数

在PHP中检查null和缺少的查询字符串参数,php,request,query-string,querystringparameter,Php,Request,Query String,Querystringparameter,我希望能够区分设置为null的现有查询字符串参数和缺少的参数。因此,问题的部分是: 如何检查查询字符串中是否存在参数 在查询字符串中传递空值的既定方法是什么?(例如,param=null或param=(无)) 感谢使用和 或使用: 我从不热衷于将空值传递给服务器的“约定”——我习惯于测试变量的存在,然后修剪它们并测试空值,例如。存储在$\u GET和$\u POST中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string,则值为“string”,如果改用:

我希望能够区分设置为null的现有查询字符串参数和缺少的参数。因此,问题的部分是:

  • 如何检查查询字符串中是否存在参数
  • 在查询字符串中传递空值的既定方法是什么?(例如,param=null或param=(无))
感谢使用和

或使用:


我从不热衷于将空值传递给服务器的“约定”——我习惯于测试变量的存在,然后修剪它们并测试空值,例如。

存储在
$\u GET
$\u POST
中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为
query=string
,则值为
“string”
,如果改用:
query=null
则值为
“null”
。请注意,它是一个字符串

如果发送:
query=
,则值将为
或空字符串。注意
isset
empty
之间的关系<如果值不为null,则code>isset将为true,而当值的计算结果为
false
时,
empty
将为true。因此对于
isset
empty
都是正确的


如果您只想检查查询字符串参数是否设置为字符串值
“null”
,只需使用一条If语句而不是两条If语句检查
$\u GET['query']=='null'
(您可能需要在检查之前调整字符的大小写)

if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
    $name= $_REQUEST['name'];
}

+1! 回答正确,但使用
empty()
时不需要
isset()
,因为
empty()
意味着
isset()
。这在使用
时尤其重要!empty()
。您可能应该为问题的第二部分添加一个明确的答案。@难以捉摸,如果您对未设置的变量调用empty,您将得到一个E_警告。@Byron Whitlock:我认为这是不正确的。docs状态“empty()与(boolean)var相反,只是没有设置变量时不会生成警告。”。我坚持更正!Empty确实不会在未设置的变量上显示警告。一定是回到了我在3.0天里学习php的时候;P从那时起,我每天都学到一些新东西。谢谢@elousive,@zzbov$_请求是$\u-GET、$\u-POST和$\u-COOKIE的组合,很少使用,如果有的话,因为访问它会带来安全隐患,而不是变量的实际来源。这个问题与查询字符串参数有关,因此应该使用$\u GET。
if(array_key_exists("myParam", $_GET)) {

}
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
    $name= $_REQUEST['name'];
}