======Schleifen und Wiederholungen====== =====Schleifen mit while===== Mit Hilfe von ''while'' definierst Du einen Anweisungsblock, der in Abhängigkeit von einer Bedingung mehrfach ausgeführt wird. Solange der Wert der Variable $count kleiner als 20 ($out) ist, wird der Anweisungsblock ausgeführt. Erst wenn der logische Ausdruck (nach ''while'') die Bedingung FALSE(Falsch) ergibt, wird die Schleife nicht weiter ausgeführt. Im Beispiel ist dies der Fall, wenn die Variable $count den Wert 20 enthält. =====Alternative Schreibweise der while-Schleife===== PHP kennt für die while-Schleife eine alternative Schreibweise. Der Konstruktion mit ''if'' ähnlich, wird der Anweisungsblock durch einen Doppelpunkt eingeleitet. Das Ende wird durch ''endwhile'' markiert. =====Die do-while-Schleife===== Im Gegensatz zur ''while''-Schleife wird hier die Austritts-Bedingung erst am Ende des Anweisungsblocks untersucht (und definiert). Das bedeutet, dass die Anweisungen mindestens einmal ausgeführt werden. Durch ''do'' wird zuerst der Anweisungsteil durchlaufen. Danach wird die Bedingung die bei ''while'' definiert wurde geprüft. Von ihrem Wahrheitsgehalt ist ein erneutes Durchlaufen der Schleife abhängig. =====Die for-Schleife===== Die ''for''-Schleife wird auch als Zählschleife bezeichnet. Im normalen Verwendungsfall wird durch * eine Zählvariable * die Bedingung und * die Veränderung des Zählers eine Laufzeit ermittelt. Ein einfaches Beispiel dient der Veranschaulichung: "; } ?> Diese Schleife wird fünfmal durchlaufen. Der Zählvariable $i wurde der Startwert 0 zugewiesen. Sie wird durch die Bedingung Überprüft. Solange die Bedingung zutrifft, wird die Zählvariable in dem Beispiel erhöht und der Anweisungsblock ausgeführt. Diese Struktur ist nicht zwingend festgelegt, wie man schon oben lesen konnte. Denn auch mehrere Zählvariablen, Bedingungen und Zähler sind einfach möglich. 4; $i++, $j--, print ("\$i ist $i / \$j ist $j") { ?>
**Ausgabe:** $i ist 2 / $j ist 9 $i ist 3 / $j ist 8 $i ist 4 / $j ist 7 $i ist 5 / $j ist 6 $i ist 6 / $j ist 5 $i ist 7 / $j ist 4 Hierdurch kann die Laufweite der Schleife deutlich beeinflusst werden. =====Alternative Schreibweise der for-Schleife===== Ähnlich der ''if''-Konstruktion gibt es auch für die ''for''-Schleife eine alternative Schreibweise: **Ausgabe:** Die Schleife wird zum 1. Mal durchlaufen. Die Schleife wird zum 2. Mal durchlaufen. Die Schleife wird zum 3. Mal durchlaufen. Die Schleife wird zum 4. Mal durchlaufen. Die Schleife wird zum 5. Mal durchlaufen. Auch hier wird der Anweisungsblock mit einem Doppelpunkt eingeleitet. Der Ausstieg erfolgt durch die Anweisung ''endfor''. =====foreach, die Schleife der Arrays===== Der Umgang mit [[php:arrays|Arrays]] erfährt durch die Anwendung dieses Schleifentyps eine deutliche Erleichterung. ''foreach'' arbeitet jedes Element des Arrays nacheinander ab. Dieser Schleifentyp ermittelt dabei die Anzahl der Elemente und setzt den internen Zeiger nach jedem Schleifendurchlauf um ein Element weiter. Dir stehen zwei Möglichkeiten zur Verfügung, die Schleife aufzurufen: **Ausgabe:** 10, 20, 30, 40, 50, Durch diese Schreibweise kann jedes Element des Arrays bearbeitet werden. Im Beispiel wird jeder Zahl des Arrays eine Null angehängt. Gleichzeitig werden die Elemente ausgegeben.\\ Soll auch der Schlüssel jedes Elements verarbeitet werden, verwendest Du folgende Syntax: $element) //$key speichert den Wert, $element den Schlüssel { $element .= "0"; $key .= "x"; echo "Schlüssel: $key; Element: $element
"; } ?>
**Ausgab:** Schlüssel: 0x; Element: 10 Schlüssel: 1x; Element: 20 Schlüssel: 2x; Element: 30 Schlüssel: 3x; Element: 40 Schlüssel: 4x; Element: 50 Jedes Element wurde genauso behandelt wie im vorhergehenden Beispiel. Hinzu gekommen ist die Bearbeitung des Schlüssels, an den das Zeichen x angehängt wird. Mehr über Arrays und den Einsatz von Schlüsseln (Keys) erfährst Du im Kapitel über [[php:arrays|Arrays]]. =====Besonderheiten bei Schleifen===== ====Ohne Klammern==== Alle Anweisungen, die innerhalb der Schleife ausgeführt werden, fasst Du durch geschweifte Klammern zusammen. Soll aber nur eine Anweisung ausgeführt werden, können die Klammern weggelassen werden. Dasselbe gilt für ''if''-Anweisungen. ===Mit Klammern=== ===Ohne Klammern=== "; ?> Auch wenn es unbequem ist, die Klammern konsequent auch bei nur einer Anweisung zu schreiben, empfehle ich doch, die Klammern konsequent zu setzen, denn schnell möchte man weitere Anweisungen einfügen und schon schlägt der Code fehl oder noch schlimmer, er verhält sich anders als gewünscht. Dies kann man einfach verhindern, indem man die Klammern immer setzt. ====Unvollständig==== Innerhalb einer Schleife kannst Du den aktuellen Zyklos unterbrechen. Die Programmausführung fährt dann am Beginn der Schleife fort. In PHP verwendest Du dafür Continue: = -3; $i -= 1) { echo "\$i hat den Wert ".$i.";
"; if($i == 0) continue; // Verhindern, dass durch 0 geteilt wird -> mit dem nächsten Durchlauf beginnen echo "100/\$i ergibt ".(100/$i)."
"; } ?>
In diesem Beispiel zählt die Schleife von +3 bis -3. Hat $i den Wert 0, wird der Schleifendurchlauf unterbrochen und am Anfang wieder fortgesetzt.\\ **Ausgabe:** $i hat den Wert 3 100/$i ergibt 33.333333 $i hat den Wert 2 100/$i ergibt 50 $i hat den Wert 1 100/$i ergibt 100 $i hat den Wert 0 $i hat den Wert -1 100/$i ergibt -100 $i hat den Wert -2 100/$i ergibt -50 $i hat den Wert -3 100/$i ergibt -33.333333 ====Abbruch==== Während ''continue'' die Schleifenausführung unterbricht und am Beginn fortsetzt, eignet sich ''break'', um den Schleifendurchlauf vorzeitig zu beenden, auch wenn die Abbruchbedingung nicht zutrifft. "; $i++; break; echo "Ich werde niemals angezeigt.."; } ?> **Ausgabe:** $i hat den Wert 1 \\ Nachdem wir nun das Grundgerüst zusammen haben, können wir uns ans Programmieren machen. Wir kennen die verschiedenen [[php:variables|Variablentypen]], dazu [[php:conditions|Bedingungen]] und [[php:loops|Schleifen]]. Nun geht es im nächsten Kapitel darum, eigene Codeblöcke zu bilden durch Einsatz von [[php:functions|Funktionen]].