Fallunterscheidung

In jeder Situation, bei der die Lösung lauten: "Wenn dies dann das", heißt die Antwort in der Programmierung meistens "if".

Die Fallunterscheidung durch "if" besteht aus 2 Elementen. Das erste Element ist die Bedingung in runden Klammern, das zweite Element ist der Anweisungsblock, der durch die geschweiften Klammern gekennzeichnet ist.

if

if (Bedingung) {
 Anweisung
}

Das bedeutet so viel wie: Wenn die Bedingung erfüllt ist, dann wird der Code im Anweisungsblock ausgeführt. Anschließend wird der Code nach dem Anweisungsblock fortgeführt. Wenn die Bedingung nicht erfüllt ist, dann wird das Programm direkt nach dem Anweisungsblock fortgeführt, ohne ihn auszuführen.

Altersprüfung mit if

$alter = 12;
if ($alter < 18) {
 echo "Minderjährig";
}
echo "<br />"; // Zeilenumbruch
echo "Altersprüfung beendet";
Altersprüfung mit if

$alter = 20;
if ($alter < 18) {
 echo "Minderjährig";
}
echo "<br />"; // Zeilenumbruch
echo "Altersprüfung beendet";

Wir können auch den Fallunterschied berücksichtigen, indem wir nicht nur eine Bedingung prüfen, sondern gleich mehrere. Dazu verwenden wir das Schlüsselwort "elseif".

Altersprüfung mit if und elseif

$alter = 20;
if ($alter < 18) {
 echo "Minderjährig";
} elseif ($alter > 18) {
 echo "Erwachsen";
}
echo "<br />"; // Zeilenumbruch
echo "Altersprüfung beendet";

Hier wird zuerst überprüft, ob die erste Bedingung "true" ist. Sollte das der Fall sein, wird der Anweisungsblock der ersten Bedingung ausgeführt und anschließend nach den Anweisungsblöcken fortgefahren. Sollte aber die erste Bedingung "false" sein, wird die zweite Bedingung geprüft. Ist die zweite Bedingung "true", wird der Anweisungsblock der zweiten Bedingung ausgeführt und anschließend nach den Anweisungsblöcken fortgeführt. Durch die Verwendung des Schlüsselwortes "elseif" können beliebig viele Bedingen hintereinandergeschrieben werden, sobald die erste Bedingung erfüllt ist, wird anschließend die Fallunterscheidung verlassen. Durch "if" und "elseif" können wir sehr viele Überprüfungen abdecken. Aber nicht immer können alle Fälle abgedeckt werden. Hier können wir auf das Schlüsselwort "else" zurückgreifen und damit alle Fälle abdecken, bei denen keine der Bedingungen zugetroffen haben.

Altersprüfung mit if, elseif und else

$alter = 18;
if ($alter < 18) {
 echo "Minderjährig";
} elseif ($alter > 18) {
 echo "Erwachsen";
} else {
 echo "Genau 18";
}
echo "<br />"; // Zeilenumbruch
echo "Altersprüfung beendet";

Wenn die "if" Bedingung und die "elseif" Bedingung nicht erfüllt sind, dann wird der Anweisungsblock von "else" ausgeführt.

Fallunterscheidungen können auch ineinander verschachtelt werden.

Verschachtelte Fallunterscheidung

$alter = 44;
if ($alter < 18) {
 echo "Minderjährig";
} elseif ($alter > 18) {
 echo "Erwachsen";
 if ($alter > 40) {
  echo "<br />"; // Zeilenumbruch
  echo "Sogar sehr Erwachsen";
 } 
} else {
 echo "Genau 18";
}
echo "<br />"; // Zeilenumbruch
echo "Altersprüfung beendet";

Weil die Variable den Wert 44 hat, greift das Programm an der "elseif" Bedingung, denn 44 > 18. In diesem Anweisungsblock befindet sich ein verschachtelter Fallunterschied. Die Bedingung des verschachtelten Fallunterschieds ist ebenfalls "true" (44 > 40), wodurch auch dieser Anweisungsblock ausgeführt wird. Auf diese Weise können sehr komplexe Verschachtelungen erstellt werden.


Einzelfälle

Mit der Fallunterscheidung "switch" überprüft das Programm die Variable oder den Ausdruck in einzelnen Fällen ("case"). Wenn dabei eine Übereinstimmung gefunden wird, wird der dazugehörige Anweisungsblock ausgeführt. Mit dem Schlüsselwort "break" wird die Fallunterscheidung verlassen.

Einzelfälle mit switch case

switch ($alter = 44) {
 case $alter < 18:
  echo "Minderjährig";
  break;
 case $alter == 18:
  echo "Genau 18";
  break;
 case $alter > 18 && $alter < 40:
  echo "Erwachsen";
  break;
 case $alter > 40:
  echo "Sogar sehr Erwachsen";
  break;
}

In der dritten "case"-Überprüfung müssen wir den zu prüfenden Wert etwas mehr eingrenzen. Bei der einfachen Überprüfung: "$alter > 18" würde sonst bereits das Ergebnis "true" sein und die vierte Überprüfung würde nicht stattfinden. Sollte aber das Schlüsselwort "break" weggelassen werden, wird der gesamte Rest der Fallunterscheidung abgearbeitet. Dadurch wäre für diesen Fall auch die folgende Schreibweise OK.

Mehrfachverzweigungen mit switch case

switch ($alter = 44) {
 case $alter < 18:
  echo "Minderjährig";
  break;
 case $alter == 18:
  echo "Genau 18";
  break;
 case $alter > 18:
  echo "Erwachsen";
 case $alter > 40:
  echo "<br />"; // Zeilenumbruch
  echo "Sogar sehr Erwachsen";
  break;
}

Für den Fall, das die Fallunterscheidung keine Übereinstimmung findet, können wir auf "default" zurückgreifen. Die Anweisungen nach dem Schlüsselwort "default" werden ausgeführt, wenn keine "case"-Überprüfung "true" ergibt.

Einzelfälle mit switch case und default

switch ($alter = 44) {
 case $alter < 18:
  echo "Minderjährig";
  break;
 case $alter == 18:
  echo "Genau 18";
  break;
 case $alter > 18:
  echo "Erwachsen";
 case $alter > 40:
  echo "<br />"; // Zeilenumbruch
  echo "Sogar sehr Erwachsen";
  break;
 default:
  echo "Hier stimmt etwas nicht";
}

Schleifen

In PHP und auch in anderen Programmiersprachen können wir durch Schleifen mehrmals hintereinander die gleichen Anweisungen ausführen lassen.

Die for Schleife

Die "for" Schleife besitzt 3 Argumente im Schleifenkopf, um das Schleifenverhalten zu steuern. Die Argumente sind die Startanweisung, die Bedingung und die Durchlaufanweisung. Zuerst wird die Startanweisung einmal ausgeführt. Als Zweites überprüft PHP die Bedingung. Wenn die Bedingung zutrifft, wird die Anweisung innerhalb der Schleife ausgeführt, andernfalls wird die Schleife verlassen. Nachdem die Schleife einmal durchlaufen wurde, wird nun die Durchlaufanweisung ausgeführt. Als Nächstes wird wieder die Bedingung überprüft. Nun kommt wieder der Schleifendurchlauf, es folgt die Durchlaufanweisung, die Bedingung wird geprüft. Schleifendurchlauf, Durchlaufanweisung, Bedingung…. Bis die Bedingung nicht mehr erfüllt ist und die Schleife beendet wird. Klingt kompliziert, ist aber sehr einfach.

for Schleife

for ($i=0; $i<10; $i++) {
 echo "$i<br />";
}

Das ist die wohl häufigste Schleife der Welt neben den Schnürsenkeln. Das Schlüsselwort "for" leitet die Schleife ein. Die Startanweisung legt die Variable "$i" auf den Wert 0. Nun wird die Bedingung überprüft. Weil die Variable kleiner als 10 ist, wird die Schleife einmal durchlaufen und es wird der Wert der Variable mit einem Zeilenumbruch ausgegeben. Jetzt wird die Durchlaufanweisung ausgeführt und der Wert der Variablen wird um 1 erhöht. Nach einer neuen Überprüfung, ob der Wert der Variable kleiner als 10 ist, wird wieder die Schleife durchlaufen, bis die Bedingung nicht mehr erfüllt ist. Das Ergebnis ist eine Aufzählung von 0 bis 9. In dem Moment, wo der Wert der Variable genau 10 wird, trifft die Bedingung nicht mehr zu und die Schleife wird verlassen.

Hinweis

Durch kleine Unachtsamkeit kann es hier schnell zu sogenannten Endlosschleifen kommen. Diese entstehen, wenn die Bedingung immer "true" ist. Sollte der Wert der Variable nicht um 1 erhöht, sondern um 1 verringert werden, so ist der Wert der Variable immer kleiner als 10 und die Schleife läuft endlos weiter. Während der Entwicklung ist das kein Problem, wir können den Browser einfach stoppen. Im Produktivsystem können wir den Server aber nicht so einfach beenden.

Auch Schleifen können ineinander verschachtelt werden. Dazu erstellen wir in kurzer Zeit das kleine Einmaleins.

Verschachtelte for Schleife

for ($i=1; $i<11; $i++) {
 echo "Reihe: $i: ";
 for ($j=1; $j<11; $j++) {
  echo $i * $j . " ";
 }
 echo "<br />";
}

Die verwendeten Zeichen sollten inzwischen bekannt sein. Als Erstes wird Reihe 1 ausgegeben, dann wird die zweite Schleife ausgeführt und das Ergebnis der Berechnung von "$i * $j" mit angehängtem Leerzeichen wird solange in einer Reihe geschrieben wie "$j" nicht größer als 10 ist. Dann wird eine neue Reihe geschrieben usw.


Die while Schleife

Die "while-Schleife" kommt in den meisten Programmiersprachen vor. Sie wird solange ausgeführt, wie die Bedingung "true" ist. Sie hat nur diese eine Funktionalität. Damit die Schleife nicht endlos läuft, müssen wir die Bedingung während des Schleifendurchlaufs ändern.

while Schleife

$i = 0;
while ($i < 10) {
 echo "$i<br />";
 $i++;
}

Weil die "while-Schleife" nur die Bedingung überprüft, müssen wir die Variable bereits vor der Schleife deklarieren und den Wert der Variable innerhalb der Schleife verändern, um die Kontrolle über die Schleife zu behalten.


do-while Schleife

Die "do-while-Schleife" funktioniert genau wie die while-Schleife mit dem einzigen Unterschied, dass die Bedingung erst nach dem Schleifendurchlauf überprüft wird. Das bedeutet auch, dass die Schleife mindesten einmal ausgeführt wird, auch wenn die Bedingung nicht zutrifft.

do-while Schleife

$i = 100;
do {
 echo "$i<br />";
 $i++;
} while ($i < 10)

Die Bedingung ist zu keiner Zeit erfüllt, aber die Schleife wird trotzdem einmal durchlaufen. Sollte die Bedingung aber erfüllt sein, verhält sie sich wie die einfache "while-Schleife".


Sprünge

Sprünge sind eine sehr einfache Funktion, um direkt an eine bestimmte Stelle des Codes zu gelangen. Mit dem Schlüsselwort "goto" springen wir direkt an die Stelle, die mit dem markiertem Name beschrieben ist.

Sprünge mit goto

goto Ziel;
 echo "Ausgabe 1";
 echo "Ausgabe 2";
 echo "Ausgabe 3";
Ziel:
 echo "Ausgabe 4";
Hinweis

Innerhalb von Schleifen oder "switch"-Fallunterscheidungen funktioniert der Sprung nicht. Er würde zu einem Fatal Error führen.


Weiter mit Arrays