应该很多人都还没有认清空字符串('')和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!
所以可以这样说===是等于下面的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
2. $var;
总结:
字符串和NULL都是以值为0存储,所以null == 0 == ' ' 。
null == 0 null == empty (成立)
null===0 null ===empty (不成立)
以下全部都有输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|