2025-01-17 08:00:03

PHP是空时为空?

我有一个关于PHP中的NULL的问题:

  $a = '';
  if($a == NULL) {
      echo 'is null';
  }

为什么我看到是空的时候$a是一个空字符串?那是虫子吗?


当前回答

使用empty - http://php.net/manual/en/function.empty.php。

例子:

$a = '';
if(empty($a)) {
    echo 'is empty';
}

其他回答

PHP 7 isset() vs empty() vs is_null()

这不是错误,而是PHP的正常行为。这是因为PHP中的==运算符不检查类型。

'' == null == 0 == false

如果还想检查这些值是否具有相同的类型,请使用===代替。要深入研究这种差异,请阅读官方文件。

如下表所示,empty($foo)等价于$foo==null, is_null($foo)等价于$foo===null。该表还显示了一些关于空比较的棘手值。(φ表示一个未初始化的变量。)

         empty    is_null 
         ==null  ===null  isset   array_key_exists
      ϕ |   T   |   T   |   F   |   F   
   null |   T   |   T   |   F   |   T   
     "" |   T   |   F   |   T   |   T   
     [] |   T   |   F   |   T   |   T
      0 |   T   |   F   |   T   |   T      
  false |   T   |   F   |   T   |   T   
   true |   F   |   F   |   T   |   T   
      1 |   F   |   F   |   T   |   T   
     \0 |   F   |   F   |   T   |   T   

使用empty - http://php.net/manual/en/function.empty.php。

例子:

$a = '';
if(empty($a)) {
    echo 'is empty';
}

如果使用==,php将空字符串或数组视为null。要区分null和empty,可以使用===或is_null。所以:

if($a === NULL)或if(is_null($a))