Heim  >  Artikel  >  Backend-Entwicklung  >  Vorrang des PHP-Operators

Vorrang des PHP-Operators

伊谢尔伦
伊谢尔伦Original
2016-11-24 13:39:301184Durchsuche

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 („+“). Bei Bedarf können Klammern verwendet werden, um eine Prioritätsänderung zu erzwingen. 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 die gleiche Priorität und die Richtung, in der sie kombiniert werden, bestimmt die Reihenfolge der Auswertung.

Vorrang des Operators

Kombinationsrichtung                                                                                >Keine, neuer Klon und neuer links [ array()

rechts ++ -- ~ (int) (float) (string) (array) (object) (bool) @ Typen und erhöhen/verringern

Keine Instanz des Typs

Richtig! Logischer Operator

Links* / % arithmetischer Operator

Links+ - Arithmetische Operationen und Stringoperatoren

links 4e9674e4037f009f8f3f0cd5e931ebcf != === !== a8093152e673feb7aba1828c43532094 Vergleichsoperatoren

Linke & Bitweise Operatoren und Referenzen

Linke ^ Bitweise Operatoren

Linke | 🎜>Links && Logische Operatoren

Links ||. Logischer Operator

Links : Ternärer Operator

Rechts = += -= *= /= .= %= &= |= ^= 639513f5eb9d8dcbce09d6b5cb44cf73>= => Zuweisungsoperator

links und und logischer Operator

links xor logischer Operator

links oder logischer Operator

Links ,

werden an vielen Stellen verwendet. Bei Operatoren mit derselben Priorität bedeutet die linke assoziative Richtung, dass die Auswertung von links nach rechts erfolgt, und die rechte assoziative Richtung bedeutet das Gegenteil . Es ist möglich, dass ein Operator mit gleicher Priorität ohne assoziative Richtung nicht mit sich selbst kombiniert werden kann. Beispielsweise ist in PHP 1 d66d2a93259ca9392db29f00ed43fda0 eine unzulässige Anweisung, 1 <= 1 == 1 jedoch nicht. Weil die Priorität des T_IS_EQUAL-Operators niedriger ist als die des T_IS_SMALLER_OR_EQUAL-Operators.

Beispiel Nr. 1: Richtungen kombinieren

Die Verwendung von Klammern kann oft die Lesbarkeit Ihres Codes verbessern, auch wenn sie nicht unbedingt erforderlich sind.

Hinweis:

Obwohl = eine niedrigere Priorität als die meisten anderen Operatoren hat, erlaubt PHP dennoch Ausdrücke wie die folgenden: if (!$a = foo()), hier Im Beispiel die Rückgabe Der Wert von foo() wird $a zugewiesen.

Beispiel:

<?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
?>

Führen Sie den folgenden Befehl in der Befehlszeile aus, und das gedruckte Ergebnis ist falsch:

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
Vorheriger Artikel:PHP ruft POST-JSON-Daten abNächster Artikel:PHP ruft POST-JSON-Daten ab