Im Kapitel zu if, else if, else habe ich schon angesprochen, dass man statt einer Reihe von “else if”-Abfragen besser ein Switch-Konstrukt nutzt.
<?php
switch($zahl) {
case 0:
echo 'Durch 0 darf man nicht teilen';
break;
case 1:
echo 'Die Zahl 1 ist sehr klein';
break;
case 99999:
echo 'Das ist eine sehr große Zahl';
echo 'kurz vor hunderttausend';
break;
}
?>
Switch ist dafür gedacht, eine Variable auf mehrere Werte zu prüfen und für den jeweiligen Wert, einen unterschiedlichen Code auszuführen. Das selbe könnte man auch mit mehreren “else if”-Abfragen bewerkstelligen, doch switch ist dafür aufgrund seiner Struktur übersichtlicher. Der Code ist schnell erklärt:
- switch erwartet eine Variable und prüft dann den Wert
- für jeden Wert kann ein “case” angelegt werden
- das “break;” nach jeder Anweisung besagt, dass die Switch-Abfrage beendet wird, wenn ein Wert gefunden wurde
- nach einem “case” können ein- und mehrzeilige Anweisungen folgen
“default” ersetzt “else” in der Switch Anweisung
Auch für die Switch Anweisung gibt es eine “else” Bedingung doch hier heißt sie “default”:
<?php
switch($zahl) {
case 0:
echo 'Zahl 0';
break;
case 1:
echo 'Zahl 1';
break;
default:
echo 'Eine Zahl ungleich 0 oder 1';
}
?>
Default steht am Ende nach allen “case”-Anweisungen und muss auch nicht mit einem break geschlossen werden, da die Switch-Anweisung an dieser Stelle sowieso zuende ist.
Natürlich kann man nicht nur Zahlen sondern auch Strings prüfen:
<?php
switch($name) {
case 'Lisa':
echo 'Lisa ist ein schöner Name';
break;
case 'Laura':
echo 'Hey Laura, ebenfalls ein schöner Name';
break;
default:
echo 'Auch dein Name ist schön, '.$name;
}
?>
Warum die Switch Anweisung verwenden?
Es gibt eigentlich nur 2 Gründe:
- bei vielen “case”-Anweisungen kann switch schneller sein als mehrere “else if”-Anweisungen
- in manchen Fällen ist es übersichtlicher, gerade wenn man viele “case”-Anweisungen hat, bzw eine Variable auf viele unterschiedliche Fälle prüfen möchte (z.b. welche Taste wurde gedrückt: “oben”, “unten”, “links”, “rechts”, “space”, “enter”, etc.)
