在PHP中,当对返回true
的布尔操作进行类型转换时,由于某种原因,解释器会将其类型转换为false
。为什么是这样?请看以下示例:
(bool) 1 === 1 // false
(bool) (1 === 1) // true
此操作应返回true
,但由于某种原因,它会返回false
。添加额外的括号时,它确实可以正常工作。有人可以解释为什么会这样吗?我目前正在使用PHP 7.0.8
答案 0 :(得分:1)
这是操作的顺序。第一个语句在等式检查之前评估bool
(bool) 1 === 1 is the same as ((bool) 1) === 1
而
(bool) (1 === 1)
首先评估括号内部。
1与TRUE
不同。