php中null 0 empty "" 区别
程序员文章站
2022-04-27 08:36:39
...
应该很多人都还没有认清空字符串('')和NULL的关系吧!! 现在我来说明一下吧: 先看一个例子: '' == NULL; '' === NULL; 运行之后会发现第一个为true,第二个为false! 为什么会这样呢? 其实在PHP中空字符串和NULL都是以为0存储的! 而==只比较,所以第
应该很多人都还没有认清空字符串('')和NULL的关系吧!!
现在我来说明一下吧:
先看一个例子:
'' == NULL;
'' === NULL;
运行之后会发现第一个为true,第二个为false!
为什么会这样呢?
其实在PHP中空字符串和NULL都是以值为0存储的!
而==只比较值,所以第一个为true!但是第二个为什么是false呢!?
原因是在PHP中变量是以C语言的结构体来存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string而NULL的类型是NULL。
这一点可以用echo gettype('');和echo gettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第二个为false!
所以可以这样说===是等于下面的函数:
function eq($var1, $var2) { if($var1 == $var2 && gettype($var1) == gettype($var2)) { return 1; } else { return 0; } }
复制代码 所以空字符串(''),NULL和0是值相等而类型不一样!
注意:
NULL是一种特殊的类型.
两种情况下为NULL
1. $var = NULL;
2. $var;
总结:
字符串和NULL都是以值为0存储,所以null == 0 == ' ' 。
null == 0 null == empty (成立)
null===0 null ===empty (不成立)
以下全部都有输出
if(0==null){ echo "0null"; echo "
"; } if(null==''){ echo "nullkong"; echo "
"; } if(null !== 0){ echo "abs null0"; echo "
"; } if('' == 0){ echo "empty0"; }
上一篇: 提升PHP性能的21种方法介绍
推荐阅读
-
php中is_null,empty,isset,unset 的区别详细介绍
-
php中0,空,null和false的区别【简记】
-
php中0,null,empty,空,false,字符串关系的详细介绍_PHP
-
php中empty(), is_null(), isset()函数区别_PHP教程
-
php中isset 和 empty和 is_null 和 0 和 false 的差别
-
php中0," ",null和false的区别
-
深入理解php中0,null,empty,空,false,字符串间的关系
-
php中global 与 $GLOBALS[""] 的区别
-
php中is_null,empty,isset,unset 的区别详细介绍_PHP
-
php中is_null,empty,isset,unset 的区别详细介绍