【发布时间】:2023-02-09 19:01:44
【问题描述】:
为什么这两个语句输出的结果不同?
我能想到的唯一原因是operator precedence,它对于== 和=== 看起来是一样的。
$a = (bool) 4 == 4;
$b = (bool) 4 === 4;
var_dump($a); // bool(true)
var_dump($b); // bool(false)
【问题讨论】:
-
类型转换的优先级高于
==。你在做true == 4。 -
它与类型杂耍有关。
==使第二个 4 成为布尔值,因为前 4 个被制成布尔值。===不做任何杂耍,它只是比较。 -
@deceze 这很清楚。
-
@KIKOSoftware 看起来这就是我要找的答案。请把它变成一个答案。