Heim > Artikel > Backend-Entwicklung > Warum führen PHP-Verkettung und -Addition zu unerwarteten Ergebnissen?
Enthüllung der Mehrdeutigkeit von PHP: Der seltsame Fall von Verkettung und Addition
PHPs Operatorpriorität und Assoziativität können bei Addition und Verkettung zu unerwarteten Ergebnissen führen Betreiber sind beteiligt. Betrachten Sie diesen Code:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; // Output: 2 echo "sum: " . ($a + $b); // Output: sum: 3</code>
Warum die Diskrepanz? Es kommt alles auf die Operator-Auswertungsreihenfolge von PHP an.
Sowohl der Additionsoperator ( ) als auch der Verkettungsoperator (.) haben die gleiche Priorität, sind jedoch linksassoziativ. Das bedeutet, dass PHP, wenn es auf einen Ausdruck trifft, der mehrere Operatoren mit derselben Priorität beinhaltet, zuerst den ganz linken Operator auswertet und sich nach rechts vorarbeitet.
In der ersten Echo-Anweisung wird der Verkettungsoperator (.) zuerst ausgewertet , was zu Folgendem führt:
"sum: 1" + 2
Die Zeichenfolge „sum: 1“ wird dann in einen numerischen Wert (0) umgewandelt und zu $b (2) addiert, was die Ausgabe 2 ergibt.
In der zweiten Echo-Anweisung zwingen die Klammern den Additionsoperator, zuerst Folgendes auszuwerten:
($a + $b) . "sum:"
Das Ergebnis wird dann mit der Zeichenfolge „sum:“ verkettet, was die gewünschte Ausgabe von „sum: 3“ ergibt ".
Dieses Verhalten ist in der PHP-Dokumentation zur Operatorpriorität dokumentiert. Darin heißt es: „Operatoren mit derselben Priorität werten von links nach rechts aus, d. h. zuerst, dann ., dann –.“
Das obige ist der detaillierte Inhalt vonWarum führen PHP-Verkettung und -Addition zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!