2010-12-07 77 views
13

我希望能够区分设置为空的现有查询字符串参数和缺少参数。所以,问题的部分是:在PHP中检查空和查询字符串参数缺失

  • 我如何检查如果一个参数查询字符串
  • 什么是对的查询字符串传递一个空值所建立的方法存在? (如PARAM = null或PARAM =(无))

感谢

回答

29

使用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 
    } 
} 
+2

+1!正确答案,但使用`empty()`时不需要`isset()`,因为`empty()`意味着`isset()`。这在使用`!empty()`时尤其重要。你应该为问题的第二部分添加明确的答案。 – jwueller 2010-12-07 23:20:24

11

或者使用array_key_exists

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

} 

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

4

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

如果您发送:query=,值将是""或空字符串。注意issetempty之间的differences。如果值不为空,则isset将为真,而当值为false时,empty将为真。因此,""将为均为issetempty

如果你只是想检查查询字符串参数被设置为"null"字符串值,你可以简单地检查$_GET['query']=='null'(你可能要检查前调整字符的大小写)

2

有了一个如果声明而不是两个:

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