Switch Statement
Teil des Abschnitts Grundlagen der PHP-Journey von Coddy — Lektion 32 von 71.
Wenn Sie eine einzelne Variable mit vielen spezifischen Werten vergleichen müssen, bietet die switch-Anweisung eine sauberere Alternative zu langen if-elseif-Ketten.
Die switch-Anweisung prüft eine Variable einmal und gleicht sie dann mit verschiedenen case-Werten ab:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
default:
echo "Regular day";
}
?>PHP vergleicht $day mit jedem case. Wenn es eine Übereinstimmung findet, führt es den Code dieses Blocks aus.
Die break-Anweisung ist entscheidend – sie weist PHP an, den switch nach der Ausführung des passenden case zu verlassen. Ohne sie würde PHP mit der Ausführung des gesamten nachfolgenden Codes fortfahren, sogar aus anderen cases.
Beachten Sie, wie Samstag und Sonntag denselben Code teilen, indem cases zusammengefügt werden. Der default-Fall verhält sich wie ein else – er wird ausgeführt, wenn kein anderer Fall zutrifft.
<?php
$grade = "B";
switch ($grade) {
case "A":
echo "Excellent!";
break;
case "B":
echo "Good job!";
break;
default:
echo "Keep trying!";
}
?>Verwenden Sie switch, wenn Sie eine Variable mit mehreren exakten Werten vergleichen. Für komplexe Bedingungen oder Bereiche bleiben Sie bei if-elseif-Anweisungen.
Aufgabe
EinfachLesen Sie eine Zeichenkette command aus der Eingabe, die eine Ampelfarbe darstellt.
Verwenden Sie eine switch-Anweisung, um die entsprechende Aktion basierend auf der Farbe zu bestimmen:
- Wenn der command
redist, geben SieStopaus - Wenn der command
yellowist, geben SieSlow downaus - Wenn der command
greenist, geben SieGoaus - Wenn der command
flashing redoderflashing yellowist, geben SieProceed with cautionaus - Für jeden anderen Wert geben Sie
Invalid signalaus
Beispiel:
Wenn die Eingabe green ist, sollte die Ausgabe sein:
GoWenn die Eingabe flashing red ist, sollte die Ausgabe sein:
Proceed with cautionWenn die Eingabe blue ist, sollte die Ausgabe sein:
Invalid signalSpickzettel
Die switch-Anweisung bietet einen saubereren Weg, um eine einzelne Variable mit mehreren spezifischen Werten zu vergleichen:
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "Start of the week";
break;
case "Friday":
echo "Almost weekend";
break;
default:
echo "Regular day";
}
?>Die break-Anweisung verlässt den switch nach der Ausführung des zutreffenden case. Ohne sie setzt PHP die Ausführung mit dem Code der nachfolgenden cases fort.
Mehrere cases können denselben Code teilen, indem sie gestapelt werden:
<?php
switch ($day) {
case "Saturday":
case "Sunday":
echo "Weekend!";
break;
}
?>Der default-case wird ausgeführt, wenn kein anderer case zutrifft, ähnlich wie eine else-Anweisung.
Verwenden Sie switch-Anweisungen, um eine Variable mit mehreren exakten Werten zu vergleichen. Für komplexe Bedingungen oder Bereiche verwenden Sie stattdessen if-elseif-Anweisungen.
Probier es selbst
<?php
// Eingabe lesen
$command = trim(fgets(STDIN));
// TODO: Schreibe deinen Code unten unter Verwendung einer `switch`-Anweisung
// Bestimme die entsprechende Aktion basierend auf der Ampelfarbe
?>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