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

时间:2010-12-07 23:16:06

标签: php request query-string querystringparameter

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

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

由于

4 个答案:

答案 0 :(得分:33)

使用isset()empty()

if (isset($_REQUEST['param']))
{
  // param was set in the query string
   if(empty($_REQUEST['param']))
   {
     // query string had param set to nothing ie ?param=&param2=something
   }
}

答案 1 :(得分:12)

或使用array_key_exists

if(array_key_exists("myParam", $_GET)) {

}

我从来没有热衷于将空值传递给服务器的'约定' - 我习惯于测试变量的存在,然后修剪它们并测试空虚,例如。

答案 2 :(得分:4)

存储在$_GET$_POST中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string,则值为"string",如果您使用:query=null,则值为"null"。请注意,这是一个字符串。

如果您发送:query=,则值为""或空字符串。请注意issetempty之间的differences。如果值不为null,则isset将为true,而当值为empty时,false将为true。因此<{>> <{strong> ""isset属于empty

如果您只想检查查询字符串参数是否设置为"null"的字符串值,您只需检查$_GET['query']=='null'(您可能需要在检查之前调整字符的大小写)

答案 3 :(得分:2)

使用一个if语句而不是两个:

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