PHP - switch
Syntax
switch(Variable) {
case Wert 1:
auszuführender Code, sofern Variable gleich Wert 1
[break;]
case Wert 2:
auszuführender Code, sofern Variable gleich Wert 2
[break;]
[weitere Fälle von case]
[default:
auszuführender Code, wenn kein Fall von case zutrifft]
}
Erklärung
Mit der Funktion switch lassen sich abhängig vom Inhalt einer Variablen verschiedene Code-Abschnitte ausführen. Die Funktion arbeitet also ähnlich wie mehrere if-Anweisungen, die die gleiche Variable betreffen (z. Bsp. if ($a==1) führe Code für Wert 1 aus, if ($a==2) führe Code für Wert 2 aus usw.).
Der Parameter "Variable" enthält den Namen der Variable auf die sich die folgenden Vergleiche mit case beziehen (z. Bsp. switch($a)...). Die folgenden case- bzw. default-Anweisungen müssen mit geschweiften Klammern umfaßt sein.
Die Vergleichswerte werden hinter der case-Anweisungen und mit einem nachfolgenden Doppelpunkt notiert (z. Bsp. "case 10:", hier wird der folgende Code ausgeführt, wenn die Variable den Inhalt "10" hat). Sofern es sich um Zeichenketten handelt, müssen diese in der case-Anweisung mit Anführungszeichen umschlossen werden, z. Bsp. case "php":. Die case-Anweisung ist beliebig oft (mit verschiedenen Werten) innerhalb einer switch-Anweisung zulässig.
Für jede case-Anweisung ist nur ein Vergleichswert zulässig. Soll für mehrere Fälle des Variableninhalts der gleiche Code ausgeführt werden, so läßt sich diese Beschränkung umgehen, indem erst nach der letzten zutreffenden case-Anweisung der auszuführende Code angegeben wird (siehe Beispiel 3).
Der Vergleich von Variableninhalt und case-Sollwert beginnt bei der ersten case-Anweisung und dann absteigend in der Reihenfolge ihre Notierung nach unten. Stimmen bei einer case-Anweisung Variableninhalt und Sollwert überein, so wird der nachfolgende Code ausgeführt. Eine eventuell nochmals folgende case-Anweisung wird dann allerdings nicht berücksichtigt, d.h. auch Code-Abschnitte, die eigentlich zu einer der folgenden case-Anweisung gehören, werden ausgeführt, obwohl Variableninhalt und case-Sollwert hier nicht übereinstimmen (siehe Beispiel 2). Um dies zu verhindern, kann am Ende der jeder case-Anweisung "break;" notiert werden, in diesem Fall wird nur der zur case-Anweisung gehörende Code ausgeführt und danach die gesamte switch-Anweisung verlassen (siehe Beispiel 1).
Optional kann mit der default-Anweisung ein Code-Abschnitt definiert werden, der ausgeführt wird, sofern keiner der Vergleiche in den case-Anweisungen zutrifft (siehe Beispiel 1).
Vergleiche auch break
Beispiel
<?php
$wochentag= date("w");
switch($wochentag) {
case 0:
echo "Wie schön, Sonntag !";
break;
case 1:
echo "Mein Gott, erst Montag...";
break;
case 5:
echo "Bald ist Wochenende...";
break;
default:
echo "Irgendein Tag in der Woche...";
}
?>
Ergebnis:
Bald ist Wochenende...
Beispiel 2
<?php
$sterne=3;
switch($sterne) {
case 5: echo"*";
case 4: echo"*";
case 3: echo"*";
case 2: echo"*";
case 1: echo"*";
}
echo " - Ihre $sterne Sterne !";
?>
Ergebnis:
*** - Ihre 3 Sterne !
Beispiel 3
<?php
$monat=date("n");
switch($monat) {
case 12: case 1: case 2:
echo "Brrr, Winter!";
break;
case 3: case 4: case 5:
echo "Ah, endlich Frühling";
break;
case 6: case 7: case 8:
echo "Sommer ist am schönsten";
break;
case 9: case 10: case 11:
echo "Herbst";
break;
}
?>
Ergebnis:
Herbst
zurück: PHP - Kontrollstrukturen
Ergänzung? Fehler? Schreib uns an team@phpbox.de
Du findest phpbox.de nützlich? Wir freuen uns über einen Link auf phpbox.de