首页 > 解决方案 > PHP逻辑操作不一致

问题描述

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

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

这怎么可能?

标签: phpincrementlogical-operators

解决方案


++$a将 的值加$a一,然后将新值“返回”到表达式的该位置。
$a == ++$a– 所以++$a使它成为1,然后将其与 的当前值进行比较$a,该值已经 1在该点上。

$a++反过来工作 - $a 的当前值返回到表达式中,只有在那之后才会$a增加 - 所以对于第二个,你有效地在1 > 0这里。
$a > ++$a取而代之$a的是首先增加,所以这将是1 > 1有效的,导致false。)


推荐阅读