为了账号安全,请及时绑定邮箱和手机立即绑定

php是空还是空?

php是空还是空?

PHP
繁华开满天机 2019-11-05 16:12:50
我有一个关于NULLPHP 的问题:  $a = '';  if($a == NULL) {      echo 'is null';  }为什么当一个空字符串为空时$a会看到为空?那是个错误吗?
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您正在寻找的是:


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

PHP将NULL,false,0和空字符串视为相等。


查看完整回答
反对 回复 2019-11-05
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

如下表中所示,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))


查看完整回答
反对 回复 2019-11-05
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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


    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]或严格比较(第三张表)。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信