Si nos fijamos en la página del listado PHP operator precedence, podrás ver que el operador de concatenación .
y el operador de suma +
tienen la misma precedencia, la asociatividad izquierda. Esto significa que las operaciones se realizan de izquierda a derecha, exactamente como muestra el código. Vamos a ver que:
$output = "sum: " . $a;
echo $output, "\n";
$output = $output + $b;
echo $output, "\n";
Esto da el siguiente resultado:
sum: 1
2
Las obras de concatenación, pero a continuación, intenta agregar la cadena sum: 1
al número 2
. Strings that don't start with a number evaluate to 0
, por lo que esto es equivalente a 0 + 2
, lo que resulta en 2
.
La solución, como sugiere en su pregunta, es encerrar las operaciones de suma entre corchetes, para que se ejecuten juntas, y luego el resultado de esas operaciones se concatena.
echo "sum: " . ($a + $b);
Si su pregunta ha sido respondida, puede aceptar la respuesta. Esto marca la pregunta como resuelta. – lonesomeday