php тот же результат, добавляющий различное количество vars

Может ли кто-нибудь объяснить, почему эти 2 дают одинаковый результат?

$a = 1; $c = $a + $a++; var_dump($c);//int(3) 

а также

 $a = 1; $c = $a + $a + $a++; var_dump($c);//int(3) 

Протестировано в PHP 7.1. Пересмотренные дампы Opcode для обоих случаев, но все же не могут получить смысл. Если мы добавим еще $ a vars к выражению, это приведет к ожидаемому результату.

Related of "php тот же результат, добавляющий различное количество vars"

От PHP: Приоритет оператора :

Приоритет операторов и ассоциативность определяют только то, как сгруппированы выражения, они не определяют порядок оценки. PHP (в общем случае) не указывает, в каком порядке оценивается выражение, а код, который предполагает определенный порядок оценки, следует избегать, поскольку поведение может изменяться между версиями PHP или в зависимости от окружающего кода.

Пример №2 Неопределенный порядок оценки

 $a = 1; echo $a + $a++; // may print either 2 or 3 $i = 1; $array[$i] = $i++; // may set either index 1 or 2 

Итак, в вашем первом примере PHP явно возвращает 1 для $a++ затем увеличивая его до 2 а затем добавляя новый $a , который равен 2 .

Во втором примере PHP возвращает 1 для $a затем добавляет $a затем добавляет $a а затем увеличивает его на 2 .

Как можно видеть здесь: https://3v4l.org/kvrTr :

PHP 5.1.0 – 7.1.0

 int(3) int(3) 

PHP 4.3.0 – 5.0.5

 int(2) int(3)