PHP
var_dump(0 == null)
//true
javascript
console.log(0 == null)
//false
PHP 中为什么0==null,0难道不是一个数值吗?
PHP
var_dump(0 == null)
//true
javascript
console.log(0 == null)
//false
PHP 中为什么0==null,0难道不是一个数值吗?
参见PHP手册,下图截取自PHP手册
此表展示了PHP二元运算符对于运算符左右运算子进行的处理。
可见,0 == null
,一个运算子为数字,另一个运算子为null
,符合表中的第二种情况,所以按照描述,两边同时被转成相应的布尔值,也就是说0
和null
都被转成了false
,这样 false == false
就是true
。
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
PHP是弱语言,对于数据类型的要求不像java那么明确,在PHP 0 和 null 和 false 以及 "" 用==的效果是一样的,当然,用===是不一样,这些平时要留意一下
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
795 阅读
644 阅读
原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的.
null,0,false在不区分类型的情况下都判为逻辑假 即false