veröffentlicht am: 03.05.2020 zuletzt aktualisiert am: 07.02.2023
Oft müssen wir anhand eines Variablenwertes entscheiden, welcher Code ausgeführt wird. Diesen können wir zwar mit if, elseif und else bestimmen, es gibt jedoch dazu eine weitere Alternative: das PHP Switch Case.Wie man diese verwenden kann, will ich dir gerne im folgenden Bericht darlegen.
Bei der einfachsten Form einer switch Anweisungübergeben wir eine Variable an switch und eine Bedingung an case. Wenn diese Bedingung erfüllt ist, wird der dafür festgelegte Code ausgeführt.
switch (variable) { case bedingung: auszuführender code }
Mit realen Werten sieht das so aus:
$zahl = 0; switch ($zahl) { case 0: echo "zahl ist 0"; } // zahl ist 0
Würde der Wert von $zahl im vorigen Beispiel einem anderen als 0 entsprechen, würde kein Code ausgeführt werden. Dies ließe sich entweder mit mehr case Blöcken oder einem default Block ändern.Mit dem Schlüsselwort default kannst du Code schreiben, der auch ausgeführt wird, wenn kein Fall zutrifft.
$zahl = 1; switch ($zahl) { case 0: echo "zahl ist 0"; default: echo "zahl ist nicht 0"; } // zahl ist nicht 0
Wenn $zahl allerdings 0 wäre, wäre das Ergebnis “zahl ist 0zahl ist nicht 0”.Das liegt daran, dass in einem solchen Block jeder Quellcode ab der Stelle ausgeführt wird, an der zum ersten Mal eine der Bedingungen eintritt.Dieses Verhalten kann mit dem Schlüsselwort break manipuliert werden.Mit break kannst du einfach bestimmen, wann die Ausführung der switch case Anweisung beendet werden soll.
$zahl = 0; switch ($zahl) { case 0: echo "zahl ist 0"; break; default: echo "zahl ist nicht 0"; } // zahl ist 0
Du kannst den vorigen Code auch mit einem Doppelpunkt und dem Schlüsselwort endswitch schreiben, statt mit geschweiften Klammern, wie hier:
Mit dieser Syntax könntest du switch case auch in kürzere PHP-Blöcke einbinden und so direkt HTML-Code zwischen diesen schreiben.
<?php switch ($zahl): ?> <?php case 0: ?> <p>zahl ist 0</p> <?php break; ?> <?php default: ?> <p>zahl ist nicht 0</p> <?php break; ?> <?php endswitch; ?>
Man kann diese Art Blöcke auch mit den Schlüsselwörtern if, elseif und else schreiben. Hierbei wird ein Ausdruck entsprechend mehrfach ausgewertet, jedes Mal, wenn er überprüft wird.
$zahl = 0; if(++$zahl == 3) { echo 3; } elseif(++$zahl == 2) { echo 2; } elseif(++$zahl == 1) { echo 1; } else { echo "Kein Treffer!"; } // 2
Dadurch, dass $zahl zweimal überprüft wird und vor jeder Überprüfung um 1 erhöht wird, trifft erst der zweite Fall zu. $zahl ist demnach 2 und der dritte Ausdruck wird nicht ausgewertet.
Im Gegensatz dazu würde im selben Beispiel mit switch case $zahl nur einmal erhöht werden.
switch(++$zahl) { case 3: echo 3; break; case 2: echo 2; break; case 1: echo 1; break; default: echo "Kein Treffer!"; break; } // 1
Es ist zudem möglich, zu überprüfen, ob eine Variable einem von mehreren Werten entspricht. Dazu kannst du aufeinanderfolgenden case Blöcke verwenden.
$zahl = 0; switch($zahl) { case 0: case 1: echo 'zahl ist 0 oder 1'; } // zahl ist 0 oder 1
Außerdem kann man in einem case-Block auch den Operator für Oder (||) verwenden, um dasselbe Ergebnis zu erzielen.
$zahl = 0; switch (true) { case ($zahl == 0 || $zahl == 1): echo 'zahl ist 0 oder 1'; break; } // zahl ist 0 oder 1
Da an switch true übergeben wurde, wurde lediglich überprüft, ob der in case angegebene Ausdruck als Ergebnis true zurückliefert.
So wie im letzten Beispiel gezeigt, sind noch mehr Möglichkeiten der Überprüfung denkbar. Zum Beispiel können Strings auf verschiedene Arten und Weisen überprüft werden:
$string = '*.~'; switch(true) { case (mb_strlen($string) > 10): echo "Der String ist zu lang."; break; case (!preg_match('/^[a-z0-9]/i', $string)): echo "Der String darf nur aus Zahlen und Buchstaben bestehen."; break; default: echo true; } // Der String darf nur aus Zahlen und Buchstaben bestehen.
Die switch Anweisung lässt sich vielseitig verwenden und ist ein mächtiges Werkzeug. Beachte bitte bei der Verwendung, dass solche Konstrukte schnell kompliziert werden können, vor allem für andere, die deinen Code verstehen müssen.
Wenn du noch Anmerkungen, Anregungen, Lob oder Kritik hast, informiere mich doch bitte mit einem Kommentar darüber!
😩 Gelangweilt von den Udemy & YouTube-Tutorials?!
Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.
"Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."
- Lennart Sparbier
100% kostenlos registrieren · keine Kreditkarte notwendig
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig