我希望能够区分设置为null的现有查询字符串参数和缺少的参数。所以问题的部分是:
由于
答案 0 :(得分:33)
if (isset($_REQUEST['param']))
{
// param was set in the query string
if(empty($_REQUEST['param']))
{
// query string had param set to nothing ie ?param=¶m2=something
}
}
答案 1 :(得分:12)
或使用array_key_exists
:
if(array_key_exists("myParam", $_GET)) {
}
我从来没有热衷于将空值传递给服务器的'约定' - 我习惯于测试变量的存在,然后修剪它们并测试空虚,例如。
答案 2 :(得分:4)
存储在$_GET
和$_POST
中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string
,则值为"string"
,如果您使用:query=null
,则值为"null"
。请注意,这是一个字符串。
如果您发送:query=
,则值为""
或空字符串。请注意isset
和empty
之间的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'];
}