Lektion 4.2: SWITCH - Abfragen

Switch-Abfragen

Einfache IF-Abfragen kann man noch simpler gestalten, indem man auf eine switch-Abfrage ausweicht. Einfach bedeutet dabei, dass es nur einen Vergleichsoperator, nämlich den Operator ==, gibt. Damit sind die switch-Abfragen nicht so mächtig wie die IF-Abfragen, in manchen Fällen aber doch überschaubarer.

Eine switch-Abfrage wird mit dem Schlüsselwort switch eingeleitet. Danach folgt in runden Klammern der Ausdruck, welcher geprüft werden soll, meist eine Variable. Danach folgt der switch-Rumpf, eingeleitet und beendet durch geschweifte Klammern.

Die einzelnen Fälle werden im switch-Rumpf mit case (zu engl.: Fall) eingeleitet, gefolgt von einem Doppelpunkt. Es sollte keine identischen Fälle geben, denn es wird stets der zuerst zutreffende Fall ausgeführt.

Trifft keiner der Fälle zu, so wird ein default:-Teil, falls er vorhanden ist, ausgeführt. Obwohl es möglich ist ein solchen default:-Teil überall einzufügen sollte er der Übersicht wegen nur am Ende der switch-Abfrage eingefügt werden - vergleichbar mit dem else-Teil einer IF-Abfrage.

Aufpassen muss man jedoch bei der Ausgabe einzelner Fälle!

Sobald ein Fall zutrifft, wird dieser ausgeführt! Daran anschließende Anweisungen werden jedoch ebenfalls ausgeführt und evtl. mit ausgegeben, sollte es keine break-Anweisung geben. Eine break-Anweisung beendet den case-Teil und springt an das Ende der switch-Abfrage.

Beispiel 1 - ohne break-Anweisung

<?php $var = 7; switch ($var) { case 0: echo "Ich werde nicht ausgeführt"; case 7: echo "Ich schon"; case 65: echo "Ich jedoch auch"; } ?>

Beispiel 2 - mit break-Anweisung

<?php $var = 7; switch ($var) { case 0: echo "Ich werde nicht ausgeführt"; break; case 7: echo "Ich werde ausgeführt"; break; case 65: echo "Ich werde nicht mehr ausgeführt"; break; // theoretisch überflüssig, man ist eh schon am Ende } ?>

Beispiel 3 - mit default-Anweisung

<?php $var = 12; switch ($var) { case 0: echo "Ich treffe nicht zu!"; break; case 7: echo "Ich treffe auch nicht zu!"; break; case 65: echo "Ich treffe auch nicht zu!"; break; default: echo "Ich werde angezeigt, da kein anderer Fall zutrifft"; break; } ?>

Übung

Teste beide Beispiele selbst aus.

Überlege dir, wo es sinnvoll sein könnte, eine Ausgabe nach der Beispiel 1-Variante vorzunehmen und programmiere sie.