PHP несогласованность в логических операциях - PullRequest
0 голосов
/ 06 ноября 2019
$a = 0;
if($a == ++$a) // Evaluates to true
if($a > $a++) // Evaluates to true

Тот же код, запущенный в c , оценивается как ложный.

Как это возможно?

1 Ответ

1 голос
/ 06 ноября 2019

++$a увеличивает значение $a на единицу, а затем «возвращает» новое значение в эту позицию выражения.
$a == ++$a - так ++$a делает его 1, а затемвпоследствии это сравнивается с текущим значением $a, которое равно 1 в этой точке.

$a++ работает наоборот -текущее значение $ a возвращается в выражение, только после этого увеличивается $a, поэтому со вторым вы фактически получаете 1 > 0 здесь.
$a > ++$a вместо $a получитсяувеличивается сначала, так что это будет 1 > 1 эффективно, в результате false.)

...