PHP 4.3

2.9.1 Assoziativität

Was passiert nun genau, wenn zwei Operatoren den gleichen Rang besitzen? In diesem Fall wird PHP nach der sogenannten Assoziativität eine Reihenfolge der Bearbeitung bestimmen. Alle Ihnen bisher bekannten Operatoren haben eine links-Assoziativität. Das heißt, dass von zwei gleichrangigen Operatoren zuerst der linke abgearbeitet wird. Deutlich wird dies bei einer Division wie 42 / 6 / 2. Das Ergebnis ist hier 3,5, da zuerst der linke Operator, der von 42 und 6 umgeben ist, ausgeführt wird (und als Ergebnis der Division 7 ergibt) und anschließend der rechte Operator das Ergebnis des linken Operators bearbeitet (7 geteilt durch 2 ergibt dann 3,5).

Wenn Sie sich nun das Beispiel mit den Rotweinflaschen noch einmal anschauen, können Sie vielleicht auch ableiten, warum das Ergebnis "2 Flaschen Rotwein bestellt." zustande kommt:

Da . und + als Operatoren gleichrangig und links-Assoziativ sind, verknüpft PHP den Satzteil "Sie haben " . 1 zuerst zum String "Sie haben 1" und versucht dann, den String um den Wert 2 zu erhöhen. Da PHP im String jedoch keinen sinnvollen numerischen Wert erkennen kann, wird er durch 0 ersetzt und eine Addition von 0 und 2 durchgeführt. Das Ergebnis 2 wird abschließend durch den Punktoperator mit dem Satzteil "Flaschen Rotwein bestellt" verknüpft. Die Ausgabe der echo-Anweisung lautet deshalb "2 Flaschen Rotwein bestellt".

Hier noch einmal eine Tabelle der Operatoren, ihrer Rangfolge entsprechend sortiert und mit Angabe der Assoziativität. Die Inkrementierungs- und Dekrementierungsoperatoren sind bisher die einzigen Operatoren mit einer rechts-Assoziativität (und dies auch nur in ihrer Verwendung als Präfix-Operatoren). Weitere Operatoren dieser Art werden Sie im Verlauf der Qualifikationseinheit kennen lernen.

Operator

Assoziativität

 ++   --              rechts
 *   /   %            links
 +   -   .            links
 =   +=   -=   *=   /=   %=   .=    links
 ,                links

Kommentare (0)

Ihr Kommentar

Name