应该很多人都还没有认清空字符串('')和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;
}
}2. $var;
总结:
字符串和NULL都是以值为0存储,所以null == 0 == ' ' 。
null == 0 null == empty (成立)
null===0 null ===empty (不成立)
立即学习“PHP免费学习笔记(深入)”;
以下全部都有输出
if(0==null){
echo "0null";
echo "<br/>";
}
if(null==''){
echo "nullkong";
echo "<br/>";
}
if(null !== 0){
echo "abs null0";
echo "<br/>";
}
if('' == 0){
echo "empty0";
}
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号