PHP检查是否为False或Null

时间:2012-07-13 05:36:28

标签: php isset

我也很困惑如何从函数返回时检查变量是否为false / null。

何时使用empty()以及何时使用isset()来检查条件?

7 个答案:

答案 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检查变量是否已设置,换句话说,它会检查变量是否为NULLnot 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)

  • 检查false:if($ v === false)
  • 检查null:if(is_null($ v))

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;