PHP switch / case

Erste Schritte: PHP switch / case

Mit switch / case kannst du in PHP eine Variable
oder einen Ausdruck gegen eine Reihe von möglichen Werten vergleichen.
Dadurch wird dein Code übersichtlicher, wenn du viele if / elseif-Abfragen
für denselben Wert verwenden würdest.
Im Ergebnis führst du genau den Codeblock aus, der zum entsprechenden Wert passt.


1. Grundsyntax

switch ($variable) {
    case wert1:
        // Code, falls $variable == wert1
        break;

    case wert2:
        // Code, falls $variable == wert2
        break;

    default:
        // Code, wenn keiner der vorherigen cases zutrifft
        break;
}
  • case wertX: Vergleicht $variable mit wertX
    auf Gleichheit (==, kein strikter Vergleich ===)
  • break: Beendet den aktuellen Switch-Block,
    sodass nicht in den nächsten case „durchgefallen“ wird
  • default: Wird ausgeführt, wenn keiner der case-Werte passt

2. Einfaches Beispiel

<?php
$farbe = "rot";

switch ($farbe) {
    case "rot":
        echo "Die Farbe ist rot";
        break;
    case "blau":
        echo "Die Farbe ist blau";
        break;
    case "gelb":
        echo "Die Farbe ist gelb";
        break;
    default:
        echo "Unbekannte Farbe";
        break;
}
?>

Hier werden die einzelnen case-Blöcke nacheinander geprüft.
Sobald ein passender Wert gefunden ist (in diesem Beispiel „rot“),
wird der Code ausgeführt und mit break beendet,
ohne die weiteren cases zu prüfen.


3. Mehrere Werte in einem Fall

Häufig möchtest du gleiches Verhalten für unterschiedliche case-Werte.
In PHP reicht es, wenn du mehrere Fälle ohne break untereinander schreibst:

<?php
$zahl = 2;

switch ($zahl) {
    case 1:
    case 2:
    case 3:
        echo "Die Zahl ist zwischen 1 und 3";
        break;

    case 4:
        echo "Die Zahl ist 4";
        break;

    default:
        echo "Die Zahl ist nicht 1, 2, 3 oder 4";
        break;
}
?>

Hier wird das Skript bei $zahl == 2 in den ersten Block springen,
da case 1 und case 2 kein break trennt.


4. Durchrutschen ohne break

Wenn du break vergisst oder bewusst weglässt, wird der Code in den folgenden
case -Abschnitten ebenfalls ausgeführt, bis ein break oder default kommt.
Das nennt man „fall-through“. In manchen Fällen ist das erwünscht, in anderen kann es zu Bugs führen.

<?php
$test = 1;

switch ($test) {
    case 1:
        echo "Fall 1 wird ausgeführt<br>";
        // kein break hier!
    case 2:
        echo "Fall 2 wird auch ausgeführt, da Fall 1 kein break hatte<br>";
        break;
    default:
        echo "Kein passender Fall";
        break;
}
?>

Ergebnis: Bei $test == 1 werden sowohl Fall 1 als auch Fall 2
ausgegeben, ehe das Skript break trifft.


5. Vergleich vs. Identität

switch vergleicht mit „==“ (lockerer Vergleich),
nicht mit „===“ (strenger Vergleich).
Heißt: „5“ (String) und 5 (Integer) werden als gleich angesehen.
Wenn du strenge Typprüfung brauchst,
verwendest du in der Regel if-Strukturen oder überprüfst manuell.


6. switch und Komplexität

switch ist praktisch, wenn du eine Variable
gegen mehrere diskrete Werte prüfen möchtest
(z. B. Wochentage, Farbwerte etc.).
Bei zu vielen elseif-Blöcken kann switch den Code
übersichtlicher machen.
Allerdings solltest du bei sehr komplexen Bedingungen
lieber if/else nutzen,
z. B. wenn du Vergleiche wie >= etc. brauchst.


Beispiel: switch in der Praxis

<?php
$punktzahl = 85;

switch (true) {
    case ($punktzahl >= 90):
        echo "Note: 1";
        break;
    case ($punktzahl >= 80):
        echo "Note: 2";
        break;
    case ($punktzahl >= 70):
        echo "Note: 3";
        break;
    default:
        echo "Note: 4 oder schlechter";
        break;
}
?>

Ein Trick: Du switchst hier gegen true,
sodass jeder case eine boolesche Bedingung enthält.
Dadurch kann man Intervalle abprüfen, die sonst nur mit if/elseif gängig sind.
Ob du dieses Muster nutzen möchtest, ist Geschmackssache.


Fazit

Der switch / case-Block bietet dir eine kompakte Möglichkeit,
um einen Wert gegen mehrere denkbare Ausprägungen zu prüfen.
Du sparst dir damit zahlreiche ifelseif-Vergleiche und
machst deinen Code besser lesbar.
Achte auf break, um ungewolltes Durchrutschen zu vermeiden,
und überlege, ob du das Trick-Muster switch (true) brauchst
oder lieber if / elseif-Strukturen verwendest.
Mit switch deckst du jedenfalls einen wichtigen Aspekt
der PHP-Kontrollstrukturen ab und kannst so
mehrere einfache Vergleichsfälle klar strukturieren.