猿问

php是空还是空?

我有一个关于NULLPHP 的问题:


  $a = '';

  if($a == NULL) {

      echo 'is null';

  }

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


繁华开满天机
浏览 498回答 3
3回答

元芳怎么了

您正在寻找的是:if($variable === NULL) {...}PHP将NULL,false,0和空字符串视为相等。

天涯尽头无女友

如下表中所示,empty($foo)是相当于$foo==null与is_null($foo)具有相同功能$foo===null。该表还显示了有关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()和is_null()功能。使用简单比较可以减少歧义,更快和更清洁。特别是匹配的花括号会更少。例如if($x==null || $y==null)vsif(is_null($x) || is_null($y))

牛魔王的故事

不,这不是错误。查看带有==表的宽松比较(第二个表),该表显示了将第一列中的每个值与其他列中的值进行比较的结果:    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或""将产生真实的。您可能要使用is_null [docs]或严格比较(第三张表)。
随时随地看视频慕课网APP
我要回答