Operator Precedence
Teil des Abschnitts Grundlagen der PHP-Journey von Coddy — Lektion 20 von 71.
Wenn ein Ausdruck mehrere Operatoren enthält, folgt PHP einer spezifischen Reihenfolge, die als Operatorpriorität bezeichnet wird. Genau wie in der Mathematik werden Multiplikation und Division vor Addition und Subtraktion ausgeführt.
<?php
echo 5 + 3 * 2; // Gibt aus: 11, nicht 16
?>PHP multipliziert zuerst 3 × 2 (was 6 ergibt), dann addiert es 5. Wenn Operatoren gleiche Priorität hätten, würde es von links nach rechts rechnen: 5 + 3 = 8, dann 8 × 2 = 16. Aber so funktioniert es nicht.
Hier ist die Präzedenz von höchster bis niedrigster für die Operatoren, die du gelernt hast:
| Priorität | Operatoren |
| Höchste | ** (Potenzierung) |
| Hoch | * / % |
| Niedrig | + - |
Um die Standardreihenfolge zu überschreiben, verwenden Sie Klammern. Operationen innerhalb von Klammern werden immer zuerst ausgewertet:
<?php
echo (5 + 3) * 2; // Gibt aus: 16
echo 2 ** 3 * 2; // Gibt aus: 16 (8 * 2)
echo 2 ** (3 * 2); // Gibt aus: 64 (2^6)
?>Im Zweifel verwenden Sie Klammern, um Ihre Absichten klarzumachen. Das macht Ihren Code leichter lesbar und verhindert unerwartete Ergebnisse.
Aufgabe
EinfachLesen Sie drei Zahlen von der Eingabe: a, b und c.
Berechnen und drucken Sie das Ergebnis des folgenden Ausdrucks, indem Sie Klammern verwenden, um sicherzustellen, dass die Addition vor der Multiplikation erfolgt:
(a + b) * c ** 2
Das bedeutet: zuerst a und b addieren, dann diese Summe mit c hoch 2 multiplizieren.
Beispiel:
Wenn die Eingaben 2, 3 und 4 sind, sollte die Ausgabe 80 sein, weil:
- Zuerst 2 + 3 = 5 addieren
- Dann 4 ** 2 = 16 berechnen
- Schließlich 5 * 16 = 80 multiplizieren
Spickzettel
PHP folgt Operatorpriorität-Regeln bei der Auswertung von Ausdrücken mit mehreren Operatoren:
| Priorität | Operatoren |
| Höchste | ** (exponentiation) |
| Hoch | * / % |
| Niedrig | + - |
<?php
echo 5 + 3 * 2; // Outputs: 11 (multiplication first)
?>Verwenden Sie Klammern, um die Standardreihenfolge zu überschreiben. Operationen innerhalb von Klammern werden zuerst ausgewertet:
<?php
echo (5 + 3) * 2; // Outputs: 16
echo 2 ** 3 * 2; // Outputs: 16 (8 * 2)
echo 2 ** (3 * 2); // Outputs: 64 (2^6)
?>Probier es selbst
<?php
// Eingabe lesen
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: Schreibe deinen Code unten, um (a + b) * c ** 2 zu berechnen
// Das Ergebnis ausgeben
echo $result;
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators