PHP "0" null false比较

667 阅读1分钟

主要是这2个的比较:

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

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

其实上面这句话   不能很好的解释"0"这种情况,我们看下官方截图:


var_dump("0"==null)这个比较对应图片第一行,会将null转为“”,相当于“0”和“”比较,自然是false了。

var_dump("0"==false)这个比较对应图片第二行,也就是会把“0”先转为bool类型再进行比较,不管0,0.0还是“0”转为bool都是false【‘0.0’,‘0.00’转bool是true】。所以"0"==false结果是true