我也很困惑如何从函数返回时检查变量是否为false / null。
何时使用empty()以及何时使用isset()来检查条件?
答案 0 :(得分:11)
对于函数的返回,既不使用isset
也不使用empty
,因为它们只适用于变量,只是在那里测试可能不存在的变量而不会触发错误。
对于函数返回,检查变量的存在是没有意义的,所以只需执行:
if (!my_function()) {
// function returned a falsey value
}
要详细了解此信息,请参阅The Definitive Guide To PHP's isset And empty。
答案 1 :(得分:8)
检查变量(几个例子)
if(is_null($x) === true) // null
if($x === null) // null
if($x === false)
if(isset($x) === false) // variable undefined or null
if(empty($x) === true) // check if variable is empty (length of 0)
答案 2 :(得分:5)
Isset()检查变量是否包含值(False,0或Empty string),但不是NULL。 如果var存在则返回TRUE;否则就错了。
另一方面,empty()函数检查变量是否为空值空字符串,0,NULL或False。如果var具有非空和非零值,则返回FALSE。
答案 3 :(得分:2)
ISSET
检查变量是否已设置,换句话说,它会检查变量是否为NULL
或not assigned a value
以外的任何值。如果变量存在且ISCS不是NULL,则ISSET返回TRUE。这意味着设置了分配了“”,“0”,“0”或“FALSE”的变量,因此ISSET为TRUE。
EMPTY
检查变量是否为空。 Empty被解释为:“”(空字符串),0(0作为整数),0.0(0作为浮点数),“0”(0作为字符串),NULL,FALSE,array()(空数组) )和“$ var;” (声明的变量,但在类中没有值。
答案 4 :(得分:0)
empty()是邪恶的。它很慢,当$ v queals false,0,'0',array(),''时,它将返回true。如果你需要这个有点检查,你可以使用 if($ v)。
答案 5 :(得分:0)
isset - 确定变量是否已设置且不是NULL
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
empty - 确定变量是否为空
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
答案 6 :(得分:0)
使用正确的功能/符号很重要,而不仅仅是看起来正确的功能/符号。现有答案中没有提到一些要考虑的事情。
isset
检查变量是否未设置或已设置为null
。empty
检查变量== false。 null
被强制转换为false
,与isset一样,如果尚未设置变量,则不会发出任何通知。 if (!$variable)
或if ($variable == false)
与empty
相同,不同之处在于,如果未设置变量,将引发通知。
if ($variable !== null)
与isset
相同,不同之处在于,如果未设置变量,则会引发通知。
NB
if (!$variable)
和if ($variable !== null)
的性能要优于它们各自的功能,但在生成通知时却没有,因此需要设置$ variable。不要以微优化的形式抑制通知,因为这会使您的代码更难以调试,甚至抑制的通知也会导致性能下降。
销售合作伙伴
如果要检查变量以便可以为其分配值,则应使用??
,?:
而不是if
语句。
??
??
在不等于null时分配一个值。
$variable = $a ?? $b
与:
if (isset($a))
$variable = $a;
else
$variable = $b;
?:
?:
在not ==时为false分配一个值。
$variable = $a ?: $b
与:
if ($a)
$variable = $a;
else
$variable = $b;
但是请记住,当未设置$ a时,将生成通知。如果可能未设置$ a,则可以改用$variable = !empty($a) ? $a : $b;
。