php mismo resultado agregando diferente cantidad de vars

¿Alguien puede explicar por qué estos 2 producen el mismo resultado?

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

y

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

Probado en PHP 7.1. Volcados de Opcode revisados ​​para ambos casos, pero todavía no pueden entender el punto. Si agregamos más $ a vars a la expresión, produce el resultado esperado.

Desde PHP: Precedencia del operador :

La precedencia y la asociatividad del operador solo determinan cómo se agrupan las expresiones, no especifican un orden de evaluación. PHP no especifica (en el caso general) en qué orden se evalúa una expresión y se debe evitar el código que asume un orden específico de evaluación, ya que el comportamiento puede cambiar entre versiones de PHP o dependiendo del código circundante.

Ejemplo # 2 Orden de evaluación indefinido

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

Entonces, en su primer ejemplo, PHP obviamente devuelve 1 para $a++ luego lo incrementa a 2 y luego agrega el nuevo $a , que es 2 .

En su segundo ejemplo, PHP devuelve 1 por $a luego sum $a luego sum $a y luego incrementándolo a 2 .

Como se puede ver aquí: 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)