(letzte Änderung an dieser Seite: 03.08.2010)
(letzte Synchronisation der PDF-Präsentation: 02.08.2017)
Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation
Syntax:
PHP-Codeswitch ($variable) { case Bedingung1: Anweisung; break; case Bedingung 2: Anweisung; break; default: Anweisung; }
Die Bedingungen werden entweder als Gleichheitsbedingung formuliert (case 1
oder case "Passwort"
) oder mit Vergleichsoperatoren (case ($pwd != "xyz")
oder case ($geschlecht == "m")
.
Beispiel:
PHP-Code<?php if (isset($_GET['absenden']) && isset($_GET['geschlecht']) && isset($_GET['zahl'])) { $geschlecht = $_GET['geschlecht']; $zahl = $_GET['zahl']; switch ($geschlecht) { case "w": $msg1 = "Sie sind eine Frau.<br />"; break; case "m": $msg1 = "Sie sind ein Mann.<br />"; break; default: $msg1 = "Ich kenne Ihr Geschlecht nicht.<br />"; } switch ($zahl) { case 5: $msg2 = "Richtig, Sie haben die Zahl 5 eingegeben!"; break; default: $msg2 = "Schade, Sie haben nicht die Zahl 5 eingegeben."; } echo $msg1 . "<br />" . $msg2 . "<br /><br />"; } ?> <form action = "<?php echo $_SERVER['PHP_SELF'] ?>" method = "get" /> m<input type = "radio" name = "geschlecht" value = "m" /> - w<input type = "radio" name = "geschlecht" value = "w" /><br /> Geben Sie hier die Zahl 5 ein: <input type = "text" name = "zahl" /> <input type = "submit" name = "absenden" /> </form>
If-Verzweigungen können immer nur einen Fall abhandeln, so dass u.U. sehr lange und verschachtelte If-Ketten entstehen. Außerdem ist switch schneller in der Ausführung. Die Codelänge unterscheidet sich bei einfachen Strukturen nicht signifikant, allerdings ist switch u.U. etwas übersichtlicher.
PHP-Code$kundenstatus = array("Gold-Mitgliedschaft", "Bestandskunde", "Neu registriert", "Nicht registriert"). $aktueller_kunde = $kundenstatus[0] // wird später für die anderen Status angepasst switch //$kundenstatus überprüfen { case //auf Gold-Mitgliedschaft überprüfen $rabatt = 0.09; break; case //auf Bestandskunde überprüfen $rabatt = 0.05; break; case //auf Neu registriert überprüfen $rabatt = 0.00; break; case //auf nicht registriert überprüfen $rabatt = 0.00; break; }