Пожалуйста, взгляните на следующее выражение:
$x = 20; echo $x+++$x++; // 41
Почему ответ 41 вместо 43 ?
Хотя я не могу найти упоминания в документах PHP, я полагаю, что PHP правильно оценивает, а ++ действует как один и тот же оператор в C / C ++ (см. Inc / dec PHP operator docs )
Итак, выражение:
$x+++$x++
фактически (оценивается справа):
Следует, однако, отметить, что в этом случае одни и те же результаты получаются, даже если выражение оценивается слева.
$x+++$x++; является
$x (20) $x (теперь $x равно 21) $x (21) 20 + 21 = 41 $x (теперь $x равно 22) Другой вопрос для чтения – В чем разница между ++ $ i и $ i ++ в PHP?
Выражение
$x+++$x++
оценивается как
($x++) + ($x++)
$x++ возвращает значение $x а затем увеличивает его на 1 . Итак, это:
$x = 20; $y = $x++;
Вы получаете $y == 20 и $x == 21 . Теперь, применяя это к вашему выражению:
$x = 20; ($x++) + ($x++);
Мы получаем первый $x++ возвращаемый как 20 при увеличении $x до 21; а второй $x++ возвращается как 21 при увеличении $x до 22. Итак:
20 + 21
который оценивается до 41, но обратите внимание, что в $ x теперь установлено значение 22.