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 if–elseif-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.