Operatorpriorität gibt an, wie „eng“ zwei Ausdrücke gebunden sind. Beispielsweise ergibt der Ausdruck 1 + 5 * 3 16 statt 18, da das Multiplikationszeichen („*“) eine höhere Priorität hat als das Pluszeichen („+“). Durch Klammern kann bei Bedarf eine Änderung der Priorität erzwungen werden. Beispiel: (1 + 5) * 3 hat den Wert 18.
Wenn Operatoren die gleiche Priorität haben, bestimmt ihre assoziative Richtung, ob die Auswertung von rechts nach links oder von links nach rechts erfolgen soll – siehe Beispiel unten.
In der folgenden Tabelle sind die Operatoren in der Reihenfolge ihrer Priorität von hoch nach niedrig aufgeführt. Operatoren in derselben Zeile haben dieselbe Priorität und die Richtung, in der sie kombiniert werden, bestimmt die Reihenfolge der Auswertung.
Kombinierte Richtung | Operator | Zusätzliche Informationen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Keine | Neues Klonen | Klonen und Neues | Links | [ | array() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rechts | ++ – ~ (int) (float) (string) (array) (object) (bool) @ | Typ und inkrementieren/dekrementieren | tr >|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Keine | Instanz vom | Typ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
richtig | ! td > |
Logischer Operator
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* / % | Arithmetischer Operator
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | + – . | Arithmetischer Operator und String-Operator |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
left | << > ;> | Bitweise Operatoren | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Keine | == != === !== <> | Vergleich Operatoren | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left | & | Bitweise Operatoren und Referenzen | tr>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left | ^ | Bitweiser Operator | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | | /td> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | && | Logische Operatoren | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | || | Logischer Operator | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Links | : | Ternärer Operator | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rechts | = += -= *= /= .= %= &= | = ^= <<= >>= => ; | Zuweisungsoperator | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
links | und | logischer Operator | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
links | xor | logischer Operator||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
links | oder | Logischer Operator||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
left | , | wird an vielen Stellen verwendet, um |
-Operators
niedriger ist als die des T_IS_SMALLER_OR_EQUAL-Operators.<?php $a = 3 * 3 % 5; // (3 * 3) % 5 = 4 $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 $a = 1; $b = 2; $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 // mixing ++ and + produces undefined behavior $a = 1; echo ++$a + $a++; // may print 4 or 5 ?>
Beispiel In Kombination mit der Richtung sieht der Code wie folgt aus
PS: Die Verwendung von Klammern, auch wenn sie nicht unbedingt erforderlich sind, kann normalerweise die Lesbarkeit des Codes verbessern. Obwohl = eine niedrigere Priorität als die meisten anderen Operatoren hat, erlaubt PHP dennoch Ausdrücke wie die folgenden: if (!$a = foo()), in diesem Fall wird der Rückgabewert von foo() $ zugewiesen A.Das obige ist der detaillierte Inhalt vonRangfolge der PHP-Operatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!