【发布时间】:2011-05-21 22:13:40
【问题描述】:
我希望能够区分设置为 null 的现有查询字符串参数和缺少的参数。所以问题的部分是:
- 如何检查查询字符串中是否存在参数
- 在查询字符串中传递空值的既定方法是什么? (例如 param=null 或 param=(nothing) )
谢谢
【问题讨论】:
标签: php request query-string querystringparameter
我希望能够区分设置为 null 的现有查询字符串参数和缺少的参数。所以问题的部分是:
谢谢
【问题讨论】:
标签: php request query-string querystringparameter
【讨论】:
empty() 时不需要isset(),因为empty() 暗示isset()。这在使用!empty() 时尤其重要。您可能应该在问题的第二部分添加一个明确的答案。
或者使用array_key_exists:
if(array_key_exists("myParam", $_GET)) {
}
我从不热衷于将空值传递给服务器的“约定”——例如,我习惯于测试变量是否存在,然后修剪它们并测试是否为空。
【讨论】:
存储在$_GET 和$_POST 中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string,则值为"string",如果您改为使用:query=null,则值为"null"。请注意,它是一个字符串。
如果您发送:query=,则值为"" 或空字符串。记下isset 和empty 之间的differences。如果值不为空,isset 将为真,而当值计算为 false 时,empty 将为真。因此"" 将适用于 isset 和empty。
如果您只想检查查询字符串参数是否设置为"null"的字符串值,您可以简单地检查$_GET['query']=='null'(您可能需要在检查之前调整字符的大小写)
【讨论】:
用一个 if 语句代替两个:
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
$name= $_REQUEST['name'];
}
【讨论】: