Fallunterscheidung


Fallunterscheidungen

Mittels Fallunterscheidungen durchläuft das Programm abhängig vom Zustand einer oder mehrerer Variablen eine jeweils andere Routine. Fallunterscheidungen sind ebenso wie Schleifen für die Programmierung unverzichtbar. Für Fallunterscheidungen stehen die „if“-, „elseif“-, „else“- und „switch“-Anweisungen zur Verfügung.

„if“, „elseif“, „else“
Die einfachste Fallunterscheidung ist „if“ (engl. wenn) – „wenn“ eine Variable einen bestimmten Wert annimmt, „dann“ geschieht etwas. Die Bedinung, die erfüllt sein muss, steht dabei hinter der if-Anweisung in runden Klammern. Danach folgt die Routine, die es zu durchlaufen gilt in geschweiften Klammern. Direkt im Anschluss an eine if-Anweisung können eine „else“- beziehungsweise „elseif“-Anweisung folgen. Dabei tritt die „else“-Routine dann in Kraft, wenn die vorhergehende if-Anweisung nicht erfüllt wurde. „else“ benötigt keine weitere Bedingung – in geschweiften Klammern folgt wieder der zu durchlaufende Programmabschnitt. Mit „elseif“ kann man, sofern die „if“-Bedingung nicht erfüllt ist, eine weitere Bedinung ins Spiel bringen. Diese wird wie bei „if“ in runden Klammern notiert.

Im folgenden Beispiel soll der Besucher einer Webseite, je nachdem zu welcher Zeit er die Seite aufruft, entweder mit „Guten Morgen“, „Guten Tag“ oder „Guten Abend“ begrüßt werden. Dazu wird die in der Variablen $zeit über die Funktion „time ()“ die Serverzeit gespeichert und im Anschluss daran die aktuelle Stunde ermittelt. Über if-, elseif- und else-Anweisungen wird die passende Grußformel zugewiesen. Für Fallunterscheidungen sind logische Operatoren unverzichtbar.

<?php
$zeit = time ();
$zeit = gmdate („G“, $zeit);
if ($zeit <= 10) {
echo „Guten Morgen“;
}
elseif (($zeit > 10) and ($zeit < 18)) {
echo „Guten Tag“;
}
else {
echo „Guten Abend“;
}
//gibt aus: Guten Tag
?>

Fallunterscheidung mit „switch“
Etwas übersichtlicher als die if-, elseif-, else-Anweisungen gestaltet sich die Fallunterscheidung mit „switch“. Zu Beginn wird mit „switch“ eine Variable benannt, für die dann in der in geschweiften Klammern folgenden Routine mit „case“ verschiedene Werte angenommen werden können. Mit der Anweisung „break“ wird ein Durchlauf abgebrochen, sobald einer der Fälle eingetreten ist. Mit der Anweisung „default“ kann man am Ende einer „switch“-Unterscheidung eine Routine festlegen, die dann initiiert wird, wenn keiner der angenommenen Fälle greift.

<?php
$zeit = time ();
$zeit = gmdate („G“, $zeit);
switch ($zeit){
case ($zeit <= 10);
echo „Guten Morgen“;
break;
case ($zeit > 10 and $zeit < 18);
echo „Guten Tag“;
break;
default:
echo „Guten Abend“;
}
//gibt aus: Guten Tag
?>

„break“
Der große Unterschied zwischen einer „if/else“- und einer „switch/case“-Unterscheidung ist der Programmablauf. Während bei „if“ immer nur genau die Routine durchlaufen wird, die auch tatsächlich greift, werden bei „switch“ alle Routinen durchlaufen, die nach dem ersten Eintreten der Bedingung folgen. Weitere „case“-Bedinungen ignoriert „switch“. Verhindern kann man dies, indem man die komplette Überprüfung mit „break“ abbricht, sobald ein Fall eingetreten ist. Dazu notiert man das „break“ hinter jeder „case“-Routine. Das obige Beispiel würde entsprechend ohne „break“-Anweisungen, wenn es jetzt 13 Uhr wäre, die Ausgabe „Guten Tag Guten Abend“ liefern.