2025-01-17 08:00:03

PHP是空时为空?

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

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

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


当前回答

NULL表示没有值的变量。要检查一个变量是否为NULL,您可以使用is_null($var)或与NULL的比较(===)。但是,如果变量没有定义,这两种方法都会生成警告。类似于isset($var)和empty($var),它们可以作为函数使用。

var_dump(is_null($var)); // true
var_dump($var === null); // true
var_dump(empty($var)); // true

阅读更多在如何检查如果一个变量是空的PHP?

其他回答

检查== vs ===

== NULL将返回true 0 == NULL将返回true False == null将返回true

=== NULL将返回false 0 === NULL将返回false false === NULL返回false

不,这不是bug。看一下Loose comparison with ==表(第二个表),它显示了第一列中的每个值与其他列中的值进行比较的结果:

    TRUE    FALSE   1       0       -1      "1"     "0"     "-1"    NULL    array() "php"   ""

    [...]    

""  FALSE   TRUE    FALSE   TRUE    FALSE   FALSE   FALSE   FALSE   TRUE    FALSE   FALSE   TRUE

在这里,你可以看到空字符串“”与false、0、NULL或“”相比会产生true。

您可能希望使用is_null [docs]代替,或者使用严格比较(第三个表)。

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

例子:

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

只是附加如果有人正在处理 ,这将工作如果处理 。

首先用str_replace()替换它,然后用empty()检查它

empty(str_replace(" " ,"" , $YOUR_DATA)) ? $YOUR_DATA = '--' : $YOUR_DATA;

NULL表示没有值的变量。要检查一个变量是否为NULL,您可以使用is_null($var)或与NULL的比较(===)。但是,如果变量没有定义,这两种方法都会生成警告。类似于isset($var)和empty($var),它们可以作为函数使用。

var_dump(is_null($var)); // true
var_dump($var === null); // true
var_dump(empty($var)); // true

阅读更多在如何检查如果一个变量是空的PHP?