如何区分 php 中的值是零还是 NULL?

How to differentiate a value is zero or NULL in php?

我有一个变量,例如 $moon

在某些情况下它的值为

$moon=0;

在其他情况下它的值为

$moon=NULL;

现在在 if 子句中 我如何区分这些值?

我的密码是

if($moon==0 && !empty($moon)){
    echo "its zero";        
}else{
    echo "its null";
}

总是显示"its zero"

我也试过了

if($moon==0 && $moon!=NULL){
    echo "its zero";        
}else{
    echo "its null";
}

您可以使用以下解决方案(使用 is_null===):

if (is_null($moon)) {
    echo "its null";
} elseif ($moon === 0) {
   echo "its zero"; 
} elseif ($moon == 0) {
   echo "its zero (string)";
} else {
   echo "another value";
}

您可以使用函数is_null

解释使用is_null:

$val1 = NULL;
$val2 = 0;
var_dump(is_null($val1)); //true
var_dump(is_null($val2)); //false

解释使用===:

$val1 = NULL;
$val2 = 0;
var_dump($val1 === 0); //false
var_dump($val2 === 0); //true

Demo: https://ideone.com/TpPQQi

您可能想使用三个相等来查看给定值是否相同,因此

$moon = 0;
if($moon === 0) {
    echo 'its zero';
} else {
    echo 'is null';
}

您可以查看更多关于比较运算符的信息here

检查 null 使用:

if (is_null($moon))

检查整数 0 使用:

if ($moon === 0)

检查整数 0 或字符串“0”

if ($moon == '0')

我必须补充一点,php 在使用“==”时会考虑任何等于数字 0 的字符串:

$moon = "asd";

if ($moon == 0) // will be true

如前所述,您可以使用 is_null() 函数。

您可以在 if() 语句中将此函数与 ! 运算符结合使用,如下所示:

if( $moon==0 && !is_null($moon) ){
    echo "its zero";        
}else{
    echo "its null";
}

使用 PHP 的语言结构 isset() 将报告 true 让您知道该值是否不是 null。您也可以使用 is_null(),但据报道 isset() 速度更快。

if(isset($var)){
    echo 'It is something.';
}else{
    echo 'It is nothing.';
}

if(!is_null($var)){
    echo 'It is something.';
}else{
    echo 'It is nothing.';
}

if($var !== null)){
    echo 'It is something.';
}else{
    echo 'It is nothing.';
}