23

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

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

谢谢

4

4 回答 4

38

使用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
   }
}
于 2010-12-07T23:18:31.947 回答
13

或使用array_key_exists

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

}

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

于 2010-12-07T23:21:43.537 回答
4

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

如果您发送:query=,该值将是""或空字符串。注意 和之间的区别。如果值不为空,则为真,而当值计算为 时,将为真。因此对于和将成立。issetemptyissetemptyfalse"" issetempty

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

于 2010-12-07T23:38:58.573 回答
2

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

if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
    $name= $_REQUEST['name'];
}
于 2012-10-04T22:33:31.960 回答