将布尔运算类型转换为布尔值的结果为false


Typecasting a boolean operation to a boolean results in false

在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不是一回事