检查变量是否存在以及它是否在一行中具有特定值
Checking if variable exist and if it has a certain value in one line
我一直认为,如果我想检查一个变量是否存在并且具有特定值,我必须使用两个 if
条件:
if(isset($x)){
if($x->age==5){}
}
但我意识到也可以这样在一行中完成:
if(isset($x) && ($x->age==5)){}
有人能告诉我如果 $x
为空,为什么第二个变体不会导致错误。假设 $x
为空且没有 属性 age
?它会尝试访问不存在的 属性 吗?
$x=null;
因为$x
为空,isset($x)
为假。然后,因为逻辑运算符“AND”(&&
),条件不能完全成立,所以,这里停止测试,不执行($x->age==5)
。
对于更短的代码,从 PHP 8.0.1 开始,您可以使用 NullSafe Operator (?->
)
if ($x?->age == 5) { }
我一直认为,如果我想检查一个变量是否存在并且具有特定值,我必须使用两个 if
条件:
if(isset($x)){
if($x->age==5){}
}
但我意识到也可以这样在一行中完成:
if(isset($x) && ($x->age==5)){}
有人能告诉我如果 $x
为空,为什么第二个变体不会导致错误。假设 $x
为空且没有 属性 age
?它会尝试访问不存在的 属性 吗?
$x=null;
因为$x
为空,isset($x)
为假。然后,因为逻辑运算符“AND”(&&
),条件不能完全成立,所以,这里停止测试,不执行($x->age==5)
。
对于更短的代码,从 PHP 8.0.1 开始,您可以使用 NullSafe Operator (?->
)
if ($x?->age == 5) { }