Как php оценивает выражение $ x +++ $ x ++?

Пожалуйста, взгляните на следующее выражение:

$x = 20; echo $x+++$x++; // 41 

Почему ответ 41 вместо 43 ?

Хотя я не могу найти упоминания в документах PHP, я полагаю, что PHP правильно оценивает, а ++ действует как один и тот же оператор в C / C ++ (см. Inc / dec PHP operator docs )

Итак, выражение:

 $x+++$x++ 

фактически (оценивается справа):

  1. получить значение x → 20
  2. увеличьте значение x → 21
  3. получить значение x → 21
  4. увеличьте значение x → 22
  5. суммировать значения, полученные от 1 и 3 → 41

Следует, однако, отметить, что в этом случае одни и те же результаты получаются, даже если выражение оценивается слева.

$x+++$x++; является

  1. Начните получать сумму значений
  2. Первое значение$x (20)
  3. Приращение $x (теперь $x равно 21)
  4. Второе значение$x (21)
  5. Получите сумму первых и вторых значений – 20 + 21 = 41
  6. Приращение $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.