|
|
Tutorials - Erste Schritte - Bedingungen - switchTutorials - Erste SchritteBedingungen: switch
Als nächstes folgt ein Gebilde, das sich "switch" nennt. Zu deutsch: eine Weiche. Sie bietet eine übersichtliche Struktur wenn einmal sehr viele Möglichkeiten einer Varibalen voneinander abgegrenzt werden sollen. Also, ein Beispiel mit "switch"-Weiche: <?php /* Wir sind jetzt Weichensteller im Frankfurter Hauptbahnhof und müssen Weichen stellen. */ //Dazu müssen wir erst mal wissen, wohin der Zug gehen soll. $Ziel = "Hamburg"; /* Wir sagen, das Ziel sei Hamburg. */ switch ($Ziel) { /* Die Variable Ziel soll durch die Weiche geschickt werden */ case "Hamburg": /* "im Falle von" "Hamburg": */ echo "Der Zug fährt nach Norddeutschland"; /* ...wird dieses ausgeführt. */ } ?> Nach den einzelnen "case"-Zeilen braucht man auch keine geschweiften Klammern (kann sie aber machen). Es werden sämtliche folgende Befehle ausgeführt... <?php $Herkunft = "Frankfurt a.M."; /* eine weitere Variable */ $Ziel = "Hamburg"; switch ($Ziel) { case "Hamburg": echo "Der Zug fährt nach Norddeutschland"; echo "<br />und er kommt aus " . $Herkunft . "<br />"; /* und ein weiterer Befehl, der im case "Hamburg" ausgeführt werden soll */ } ?> Die Weiche wird verlassen. <?php $Herkunft = "Frankfurt a.M."; $Ziel = "Hamburg"; switch ($Ziel) { case "Hamburg": echo "Der Zug fährt nach Norddeutschland"; echo "<br />und er kommt aus " . $Herkunft . "<br />"; break; /* verlassen der Weiche */ } ?> <?php $Herkunft = "Frankfurt a.M."; $Ziel = "Hamburg"; switch ($Ziel) { case "Hamburg": /* case stimmt */ echo "Der Zug fährt nach Norddeutschland"; /* wird ausgegeben */ echo "<br />und er kommt aus " . $Herkunft . "<br />"; /* wird ausgegeben */ break; /* switch wird verlassen */ case "München": /* ( wird gar nicht mehr überprüft ) */ echo "Der Zug fährt nach Süddeutschland"; echo "<br />und er kommt aus " . $Herkunft . "<br />"; break; } /* hier geht das Script weiter */ ?> <?php $Herkunft = "Frankfurt a.M."; $Ziel = "Hamburg"; switch ($Ziel) { case "Hamburg": /* case stimmt */ echo "Der Zug fährt nach Norddeutschland"; /* wird ausgegeben */ echo "<br />und er kommt aus " . $Herkunft . "<br />"; /* wird ausgegeben */ // kein break-Befehl case "München": /* diese Bedingung stimmt nicht, aber es wird durchlaufen, da Hamburg bereits stimmte... */ echo "Der Zug fährt nach Süddeutschland"; /* wird ausgegeben */ echo "<br />und er kommt aus " . $Herkunft . "<br />"; /* wird ausgegeben */ } ?> Im folgenden Script hat das Weglassen aber einen gewissen Sinn: <?php $Tier = "Schmetterling"; switch ($Tier) { case "Fliege": case "Schmetterling": /* hier wird in die Weiche eingestiegen */ // es folgen allerdings keine Befehle... /* ... aber auch kein break, daher wird... */ case "Ameise": echo "Das Tier ist ein Insekt"; /* dieses ausgegeben. */ break; } ?> Was aber wenn nun keines der Argumente stimmt ? Die Weiche würde kein Ergebnis liefern. Damit sie es doch tut, gibt es das Wörtchen default. Es entspricht praktisch dem "else" der if-Bedingung: <?php $Tier = "Katze"; /* "Katze" wird in der Weiche nicht abgefragt */ switch ($Tier) { case "Elefant": echo "Ein " . $Tier . " ist größer als ein Pferd" . "<br />"; case "Pferd": echo "Ein " . $Tier . " ist größer als ein Hund" . "<br />"; case "Hund": echo "Ein " . $Tier . " ist größer als ein Kaninchen" . "<br />"; case "Kaninchen": echo "Ein " . $Tier . " ist größer als ein Wurm" . "<br />"; default: echo "Ein " . $Tier . " ist größer als ein Atom" . "<br />"; /* deswegen wird das "default" ausgeführt */ } ?> <?php $Tier = "Hund"; /* Bei case "Hund" wird in die Weiche eingestiegen */ switch ($Tier) { case "Elefant": echo "Ein " . $Tier . " ist größer als ein Pferd" . "<br />"; case "Pferd": echo "Ein " . $Tier . " ist größer als ein Hund" . "<br />"; case "Hund": echo "Ein " . $Tier . " ist größer als ein Kaninchen" . "<br />"; case "Kaninchen": echo "Ein " . $Tier . " ist größer als ein Wurm" . "<br />"; default: echo "Ein " . $Tier . " ist größer als ein Atom" . "<br />"; } ?> <?php $Zahl = 3; switch ($Zahl) { case 5: echo "Die Zahl ist größer als 4" . "<br />"; case 4: echo "Die Zahl ist größer als 3" . "<br />"; case 3: echo "Die Zahl ist größer als 2" . "<br />"; case 2: echo "Die Zahl ist größer als 1" . "<br />"; case 1: echo "Die Zahl ist größer als 0" . "<br />"; break; default: /* vor dem default ein break, damit die Fehlermeldung nicht immer ausgegeben wird */ echo "FEHLER: ungültige Zahl" . "<br />"; break; } ?> |