Пожалуйста, взгляните на следующее выражение:
$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.