PHP中,null、false、0、空的区别

php是一种弱类型语言、在进行一些变量的判断时非常容易掉进坑中,今天给大家说一下弱类型语音中,null、false、0的区别。



var_dump(null == 0); // true var_dump(null == false); // true var_dump(false == 0); // true var_dump('' == 0); // true var_dump('' == null); // true var_dump('' == false); // true var_dump(null === 0); // false var_dump(null === false); // false var_dump(false === 0); // false var_dump('' === 0); // false var_dump('' === null); // false var_dump('' === false); // false

上面这段代码可以看到如果用等于号来进行比较null、false、0、空这四者的是相等的,但如果用绝对等于进行比较那么就会是false。

原因:

等于(==)只进行值的比较,不进行类型的比较。
绝对等于(===)即进行值的比较,又进行类型的比较。

另外在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

注意:

NULL是一种特殊的类型.

两种情况下为NULL

  1. $var = NULL;

  2. $var;

3.””、0、”0″、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

总结

从上面实例我们可以看得出null,0,false是假,而”是一个空字符串并不是空值。

本文已经被查看753次

发表评论

电子邮件地址不会被公开。 必填项已用*标注