Может быть дубликат, но я так и не нашел ответа. Я провел несколько основных тестов с оператором увеличения:
$i = 42;
$i > ++$i; # false
$i > $i++; # true
Если первое сравнение имеет смысл для меня, возвращая false, я не могу понять, почему второе возвращает true.
Даже если это предварительное или последующее увеличение, я бы сказал, что оба они false. Как моя переменная может быть строго выше, чем ее собственное увеличенное значение?
Те же тесты с C и C++ показывают предупреждения, но говорят false для обоих сравнений.
$i
до 43 в предыдущей команде, поэтому выражение оценивается как43 > 43
, что, естественно, дает false. Я полагаю, что дальше произойдет следующее: 1) PHP имеет выражение для вычисления с правой стороны, которое является постдекрементным, что означает, что$i
сначала возвращается как 43, а затем увеличивается до 44; 2)$i
теперь равно 44 и, таким образом, интерпретируется как таковое, что дает выражение44 > 43
. Я плохо разбираюсь во внутренностях PHP, но это единственный сценарий, который я могу себе представить. Может быть, кто-то более знающий сможет пролить свет на это. - person El_Vanja   schedule 17.05.2021