为什么在 PHP 中 0==null 为 true ?

PHP

var_dump(0 == null)
//true

javascript

console.log(0 == null)

//false

PHP 中为什么0==null,0难道不是一个数值吗?

阅读 5.7k
5 个回答

原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的.
null,0,false在不区分类型的情况下都判为逻辑假 即false

参见PHP手册,下图截取自PHP手册

clipboard.png

此表展示了PHP二元运算符对于运算符左右运算子进行的处理。

可见,0 == null,一个运算子为数字,另一个运算子为null,符合表中的第二种情况,所以按照描述,两边同时被转成相应的布尔值,也就是说0null都被转成了false,这样 false == false就是true

以下的东西被认为是空的:

"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)

PHP是弱语言,对于数据类型的要求不像java那么明确,在PHP 0 和 null 和 false 以及 "" 用==的效果是一样的,当然,用===是不一样,这些平时要留意一下

PHP为弱语言,在程序运行过程中php会把变量判断加以处理,所以0 == null 在PHP里它都会认为false.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题