在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下:
//相等判断
'' == NULL == 0 == false (相等)
array() = 0 == NULL == false (相等)
array() <> '' (不相等)
array() = 0 == NULL == false (相等)
array() <> '' (不相等)
//恒等判断
//任何两个数比较都不恒等
var_dump(false == FALSE); //bool(true)
var_dump(false === FALSE); //bool(true)
var_dump(true == TRUE); //bool(true)
var_dump(true === TRUE); //bool(true)
var_dump('' == NULL); //bool(true)
var_dump('' === NULL); //bool(false)
var_dump('' == 0); //bool(true)
var_dump('' === 0); //bool(false)
var_dump('' == false); //bool(true)
var_dump('' === false); //bool(false)
var_dump('' == true); //bool(false)
var_dump('' === true); //bool(false)
var_dump(null == 0); //bool(true)
var_dump(null === 0); //bool(false)
var_dump(null == false); //bool(true)
var_dump(null === false); //bool(false)
var_dump(null == true); //bool(false)
var_dump(null === true); //bool(false)
var_dump(0 == false); //bool(true)
var_dump(0 === false); //bool(false)
var_dump(0 == true); //bool(false)
var_dump(0 === true); //bool(false)
var_dump(false === FALSE); //bool(true)
var_dump(true == TRUE); //bool(true)
var_dump(true === TRUE); //bool(true)
var_dump('' == NULL); //bool(true)
var_dump('' === NULL); //bool(false)
var_dump('' == 0); //bool(true)
var_dump('' === 0); //bool(false)
var_dump('' == false); //bool(true)
var_dump('' === false); //bool(false)
var_dump('' == true); //bool(false)
var_dump('' === true); //bool(false)
var_dump(null == 0); //bool(true)
var_dump(null === 0); //bool(false)
var_dump(null == false); //bool(true)
var_dump(null === false); //bool(false)
var_dump(null == true); //bool(false)
var_dump(null === true); //bool(false)
var_dump(0 == false); //bool(true)
var_dump(0 === false); //bool(false)
var_dump(0 == true); //bool(false)
var_dump(0 === true); //bool(false)
//对true的一些判断
var_dump('1' == true); //bool(true)
var_dump('1' === true); //bool(false)
var_dump(1 == true); //bool(true)
var_dump(1 === true); //bool(false)
var_dump(array() == true); //bool(false)
var_dump(array() === true); //bool(false)
var_dump('1' === true); //bool(false)
var_dump(1 == true); //bool(true)
var_dump(1 === true); //bool(false)
var_dump(array() == true); //bool(false)
var_dump(array() === true); //bool(false)
//array()比较
var_dump(array() == ''); //bool(false)
var_dump(array() === ''); //bool(false)
var_dump(array() == NULL); //bool(true)
var_dump(array() === NULL); //bool(false)
var_dump(array() == 0); //bool(false)
var_dump(array() === 0); //bool(false)
var_dump(array() == false); //bool(true)
var_dump(array() === false); //bool(false)
var_dump(array() == true); //bool(false)
var_dump(array() === true); //bool(false)
var_dump(array() === ''); //bool(false)
var_dump(array() == NULL); //bool(true)
var_dump(array() === NULL); //bool(false)
var_dump(array() == 0); //bool(false)
var_dump(array() === 0); //bool(false)
var_dump(array() == false); //bool(true)
var_dump(array() === false); //bool(false)
var_dump(array() == true); //bool(false)
var_dump(array() === true); //bool(false)
//恒等比较
var_dump(0 === '0'); //bool(false)
var_dump(0 === 00); //bool(true)
var_dump(00 === intval('0')); //bool(true)
var_dump(0 === 00); //bool(true)
var_dump(00 === intval('0')); //bool(true)
本文详细解析了PHP中由于其弱类型特性导致的不同类型值之间的隐式转换,以及这种转换如何影响值的比较,包括相等判断和恒等判断。通过具体示例,展示了false、null、空字符串、0等特殊值在比较时的行为,对于理解PHP中的类型转换和比较逻辑具有重要意义。
357

被折叠的 条评论
为什么被折叠?



