在PHP中,当类型转换一个返回true
的布尔运算时,由于某种原因,解释器会将其类型转换为false
。为什么会这样?看下面的例子:
(bool) 1 === 1 // false
(bool) (1 === 1) // true
这个操作应该返回true
,但是由于某种原因它返回false
。当添加额外的括号时,它确实正确工作。有人能解释一下这是为什么吗?我现在使用的是PHP 7.0.8
这是操作的顺序。第一条语句在相等性检查
之前计算bool值(bool) 1 === 1 is the same as ((bool) 1) === 1
与
(bool) (1 === 1)
先在圆括号内求值。
1和TRUE
不是一回事