应该很多人都还没有认清空字符 串('')和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 ;
}
}
复制代码
if( $var1 == $var2 && gettype ( $var1 ) == gettype ( $var2 )) {
return 1 ;
} else {
return 0 ;
}
}
所以空字符串(''),NULL和0是值相等而类型不一样!
注意:
NULL是一种特殊的类型.
两种情况下为NULL
1. $var = NULL;
2. $var;