PHP逻辑运算不一致

PHP inconsistency in logic operations

$a = 0;
if($a == ++$a) // Evaluates to true
if($a > $a++) // Evaluates to true

c 中的相同代码 运行 计算结果为 false。

这怎么可能?

++$a$a 的值递增 1,然后将新值“returns” 放入表达式的该位置。
$a == ++$a – 所以 ++$a 使其成为 1,然后将其与 $a 当前 值进行比较,已经是 1了。

$a++ 以相反的方式工作 - $a 的当前值返回到表达式中,只有在那之后 $a 才会递增 - 所以对于第二个,你有效地有 1 > 0这里。
(使用 $a > ++$a 而不是 $a 会首先递增,因此实际上是 1 > 1,导致 false。)