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

Einstieg in PHP 8 und MySQL
PHP Buch