Se si guarda la pagina che elenca PHP operator precedence, vedrete che l'operatore di concatenazione .
e l'operatore di addizione +
hanno uguale precedenza, con associatività a sinistra. Ciò significa che le operazioni vengono eseguite da sinistra a destra, esattamente come mostra il codice. Diamo un'occhiata a che:
$output = "sum: " . $a;
echo $output, "\n";
$output = $output + $b;
echo $output, "\n";
Questo ha pronunciato la seguente uscita:
sum: 1
2
Le opere concatenazione, ma si tenta di aggiungere la stringa sum: 1
al numero 2
. Strings that don't start with a number evaluate to 0
, quindi questo è equivalente a 0 + 2
, che risulta in 2
.
La soluzione, come suggerito nella domanda, è racchiudere le operazioni di aggiunta tra parentesi, in modo che vengano eseguite insieme, e quindi il risultato di tali operazioni è concatenato.
echo "sum: " . ($a + $b);
Se la tua domanda ha avuto risposta, puoi accettare la risposta. Questo segna la domanda come risolta. – lonesomeday