Heim  >  Artikel  >  Backend-Entwicklung  >  Warum führen PHP-Verkettung und -Addition zu unerwarteten Ergebnissen?

Warum führen PHP-Verkettung und -Addition zu unerwarteten Ergebnissen?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 10:50:29385Durchsuche

Why Does PHP Concatenation and Addition Lead to Unexpected Results?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn