php是null还是空?

时间:2011-11-23 01:44:57

标签: php null

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

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

$a为空字符串时,为什么会看到为空?这是一个错误吗?

10 个答案:

答案 0 :(得分:300)

您正在寻找的是:

if($variable === NULL) {...}

PHP将 NULL false 0 empty 字符串视为相等。

答案 1 :(得分:202)

如下表所示,empty($foo)相当于$foo==null,而is_null($foo)具有与$foo===null相同的功能。该表还显示了有关null比较的一些棘手的值。 (φ表示未初始化的变量。)

我从不使用empty()is_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   

答案 2 :(得分:26)

检查== vs ===

'' == NULL会返回真实的 0 == NULL会返回真实的 false == null将返回true

其中

'' === NULL会返回false 0 === NULL将返回false false === NULL将返回false

答案 3 :(得分:16)

不,这不是一个错误。查看Loose comparisons with == table(第二个表),其中显示了将第一列中的每个值与其他列中的值进行比较的结果:

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

    [...]    

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

在那里,您可以看到与""false0NULL相比较的空字符串""将产生真实。

您可能希望使用is_null [docs]或严格比较(第三张表)。

答案 4 :(得分:12)

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

'' == null == 0 == false

如果您还想检查值是否具有相同类型,请改用===。要深入研究这种差异,请阅读official documentation

答案 5 :(得分:8)

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

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

答案 6 :(得分:0)

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

示例:

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

答案 7 :(得分:0)

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

enter image description here

答案 8 :(得分:0)

如果某人正在与 打交道,只需添加,如果与 打交道,这将起作用。

首先将其替换为str_replace(),然后将其替换为empty()

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

答案 9 :(得分:0)

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

How to check if a variable is NULL in PHP?中阅读更多内容