在PHP中检查null和缺少的查询字符串参数
我希望能够区分设置为null的现有查询字符串参数和缺少的参数。因此,问题的部分是:在PHP中检查null和缺少的查询字符串参数,php,request,query-string,querystringparameter,Php,Request,Query String,Querystringparameter,我希望能够区分设置为null的现有查询字符串参数和缺少的参数。因此,问题的部分是: 如何检查查询字符串中是否存在参数 在查询字符串中传递空值的既定方法是什么?(例如,param=null或param=(无)) 感谢使用和 或使用: 我从不热衷于将空值传递给服务器的“约定”——我习惯于测试变量的存在,然后修剪它们并测试空值,例如。存储在$\u GET和$\u POST中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string,则值为“string”,如果改用:
- 如何检查查询字符串中是否存在参数
- 在查询字符串中传递空值的既定方法是什么?(例如,param=null或param=(无))
我从不热衷于将空值传递给服务器的“约定”——我习惯于测试变量的存在,然后修剪它们并测试空值,例如。存储在
$\u GET
和$\u POST
中的值只能是字符串或数组,除非在运行时明确设置。如果您的查询字符串为query=string
,则值为“string”
,如果改用:query=null
则值为“null”
。请注意,它是一个字符串
如果发送:query=
,则值将为“
或空字符串。注意isset
和empty
之间的关系<如果值不为null,则code>isset将为true,而当值的计算结果为false
时,empty
将为true。因此对于isset
和empty
都是正确的
如果您只想检查查询字符串参数是否设置为字符串值
“null”
,只需使用一条If语句而不是两条If语句检查$\u GET['query']=='null'
(您可能需要在检查之前调整字符的大小写):
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
$name= $_REQUEST['name'];
}
+1! 回答正确,但使用
empty()
时不需要isset()
,因为empty()
意味着isset()
。这在使用时尤其重要!empty()
。您可能应该为问题的第二部分添加一个明确的答案。@难以捉摸,如果您对未设置的变量调用empty,您将得到一个E_警告。@Byron Whitlock:我认为这是不正确的。docs状态“empty()与(boolean)var相反,只是没有设置变量时不会生成警告。”。我坚持更正!Empty确实不会在未设置的变量上显示警告。一定是回到了我在3.0天里学习php的时候;P从那时起,我每天都学到一些新东西。谢谢@elousive,@zzbov$_请求是$\u-GET、$\u-POST和$\u-COOKIE的组合,很少使用,如果有的话,因为访问它会带来安全隐患,而不是变量的实际来源。这个问题与查询字符串参数有关,因此应该使用$\u GET。
if(array_key_exists("myParam", $_GET)) {
}
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
$name= $_REQUEST['name'];
}