5 Verzweigungen

  • Durch Verzweigungen kann ein Programm oder Skript unter Vorgabe bestimmter Bedingungen, die wir im vorherigem Kurs-Teil bereits besprochen haben, auf Ereignisse während des Ablaufes reagieren. PHP bietet verschiedene Verzweigungen an, einige sogar in verschiedenen Schreibweisen. (beispiel_07.php) 01: <?php 02: $x = 5; 03: $y = 7; 04: $z = 6; 05: if($x < $y) 06: { 07: echo "x = $x"; 08: echo "y = $y"; 09: echo "x ist kleiner als y"; 10: if($x < $z) 11: { 12: echo "x = $x"; 13: echo "z = $z"; 14: echo "x ist auch kleiner als z"; 15: } 16: } 17: if($y < $z) 18: { 19: echo "y = $y"; 20: echo "z = $z"; 21: echo "y ist kleiner als z"; 22: } 23: else 24: { 25: echo "y = $y"; 26: echo "z = $z"; 27: echo "y ist größer als oder gleich z"; 28: } 29: ?> In Beispiel 7 steht zunächst die uns schon bekannte if-Verzweigung. Im Kurs-Teil 4 enthielt die if-Verzweigung nur eine Anweisung, diese kannst du also direkt hinter der Verzweigung schreiben. Soll eine Verzweigung mehrere Anweisungen enthalten, dann fasst man die Anweisungen zu einem Block zusammen, dessen Anfang und Ende mit geschweiften Klammern markiert wird. Außerdem ist es möglich if-Verzweigungen zu schachteln: Der Anweisungsblock der ersten if-Verzweigung beinhaltet im Beispiel eine weitere if-Verzweigung (Zeile 10), die dann natürlich auch wiederum ihren eigenen Anweisungsblock haben kann. Die zweite Verzweigung ist eine if-else-Verzweigung. Wenn die Bedingung der Verzweigung wahr ist, dann wird der Block direkt unter "if()" ausgeführt, wenn der Ergebniswert der Bedingung aber unwahr (false) ist, dann wird immer der Block unter "else" ausgeführt. Sollte direkt hinter "else" wieder eine if-Anweisung kommen, dann kannst du dafür auch als andere Schreibweise "elseif" benutzen. "else if()" und "elseif()" verhalten sich quasi identisch, eine Mehrfachverzweigung ist damit auch möglich. Zu beachten ist aber, dass die elseif-Anweisung nur ausgeführt wird, wenn die Bedingung der vorherigen if- oder elseif-Anweisung false ergab. (beispiel_08.php) 01: <?php 02: $x = 2; 03: $y = 7; 04: if ($x < $y): 05: echo "x = $x"; 06: echo "y = $y"; 07: echo "x ist kleiner als y"; 08: else: 09: echo "x = $x"; 10: echo "y = $y"; 11: echo "y ist größer als oder gleich x"; 12: endif; 13: switch($x) 14: { 15: case 1: 16: echo "x ist 1."; 17: break; 18: case 2: 19: echo "x ist 2."; 20: break; 21: case 3: 22: echo "x ist 3."; 23: break; 24: default: echo "x ist kleiner 1 oder größer 3."; 25: } 26: ?> Eine if-Verzweigung mit mehreren enthaltenen Anweisungen zeigt das Beispiel 8 nochmal in Zeile 4 bis 12 in einer anderen Schreibweise. Anstatt der geschweiften Klammern kann der Block am Anfang mit ":" nach "if()" oder "else" sowie "elseif" und am Ende mit "endif;" des Blockes markiert werden. In Zeile 13 bis 25 sehen wir eine switch-Verzweigung. Hier wird in jeder Bedingung mit "case" der genaue Wert mit der bei "switch()" angegebenen Variablen verglichen. "default" wird ausgeführt, wenn alle vorherigen Anweisungen mit "case" false ergaben. Wichtig ist zu wissen, dass PHP die switch-Verzweigung Zeile für Zeile abarbeitet, wenn eine Bedingung wahr ist, wird deren Anweisungen abgearbeitet und auch alle folgenden, "case" spielt dann keine Rolle mehr. Möchten Sie dies hingegen vermeiden, müssen Sie mit "break;" (Zeile 17, 20 und 23) das Verlassen und damit den Abbruch der Verzweigung erzwingen. x ist 2, stände bei "case 2:" kein "break;", dann würde PHP also auch die Anweisungen unter "case 3:" ausführen. Das folgende Beispiel 9 verdeutlicht die switch-Verzweigung schließlich in einer anderen Schreibweise, angelehnt an die alternative if-Verzweigung. Die schließende Klammer wird hier allerdings durch ein "endswitch;" ersetzt. (beispiel_09.php) 01: <?php 02: $x = 2; 03: switch($x): 04: case 1: 05: echo "x ist 1."; 06: break; 07: case 2: 08: echo "x ist 2."; 09: break; 10: case 3: 11: echo "x ist 3."; 12: break; 13: default: echo "x ist kleiner 1 oder größer 3."; 14: endswitch; 15: ?>