for, while Schleifen
Schleifen sind sich wiederholende Code-Abschnitte. Jeder Durchlauf verrichtet eine Arbeit und prüft auch die Bedingung, die den nächsten Durchlauf startet oder zum Verlassen der Schleife führt. Wenn der gewünschte Zustand nicht erreicht wird, entsteht eine Endlosschleife.
While - Schleife
while()
Die Schleifen unterscheiden sich bei der Prüfung der Bedingungen. Die while Schleife prüft die Bedingung zuerst, und beginnt dann den Durchlauf.
<?php
$zahl = 0;
while ($zahl <= 10) //solange die Variable kleiner oder gleich 10 ist
{
echo "$zahl<br />\n";
$zahl++; //increment nach der Ausgabe sonst wird bis 11 angezeigt
}
?>
1
2
3
4
5
6
7
8
9
10
Das Durchlaufen einer Schleife geht natürlich viel zu schnell, so dass wir vor dem Monitor nichts entstehen sehen könnten, lediglich das Resultat aller Durchläufe kriegen wir hier zu Gesicht.
Alternativer while Syntax
endwhile
while (Bedingung): // Doppelpunkt Anweisung; endwhile; // Ende
Wie schon beim alternativen if, fehlen mir persönlich die geschweiften Klammern. Beim folgenden do while gibt es keinen alternativen Syntax, also schaffe ich es ohnehin nicht einen Abfrage-Stiel ohne geschweifte Klammern zu pflegen.
Do While - Schleife
do while()
Die do while Schleife wiederholt sich auch solange die Bedingung TRUE ist - also bis die Bedingung FALSE wird. Aber die do ... while Schleife tut zuerst etwas, bevor sie die Bedingung prüft, einmal tut sie es mindestens.
<?php
$zahl = 60;
do
{
echo ">";
$zahl--; //decrement
} while ($zahl > 0)
?> Nach rechts.
for - Schleife
for()
Die for - Schleife birgt etwas weniger die Gefahr einer Endlosschleife, weil alles in einem Aufwasch vorherbestimmt wird. Einiges was bei den anderen Schleifen im Anweisungsblock steht, wird hier zur Multi-Bedingung, zum Beispiel die Veränderung der Variablen.
<?php // Danke www.schattenbaum.net
$zahl = 12;
for ($count = 1; $count < $zahl; $count++)
{
echo $count,", ";
}
echo $zahl,"."; // zum Abschluss.
?>
Alternativer for Syntax
endfor
for (expr1; expr2; expr3): // Doppelpunkt
Anweisung;
endfor; // Ende
Siehe Bemerkung beim alternativen while Syntax.
Inkrement / Dekrement Operatoren
++, --
In Schleifen werden, wie oben gesehen, zum Auf- oder Abzählen Variablen
(z.B. $zahl oder $count) um 1 erhöht oder verringert. Dies geschah durch das Anfügen
von ++ oder -- an die Variable: $zahl++ oder $count--.
Beide können auch vorne angefügt werden: ++$zahl oder --$count,
aber nicht beides ++$zahl++ würde einen Fatalen Fehler verursachen.
Ob vor- oder nachher hat unterschiedliche Effekte.
Falls die Variable ein Buchstabe ist, dann wird dieser durch den Inkrement zum nächsten aber durch den Dekrement nicht zum vorherigen Buchstaben im Alphabet.
$zahl = 5; echo ++$zahl; // vor der Ausgabe $zahl = 5; echo $zahl++; // nach der Ausgabe $count = 5; $count--; // nach der Variablen aber vor der Ausgabe echo $count; $i = "i"; $i++; // nächster Buchstabe im Alphabet echo $i; $j = "j"; $j--; // Dekrement wirkungslos bei Buchstaben echo $j; $A = "A1"; $A++; // mixed mit Zahl am Ende klappt inkrementieren echo $A; $A = "A1"; $A--; // dekrementieren wirkungslos bei mixed echo $A;
+=1, -=1
Die Alternative ist dieser Syntax zum Addieren und Substrahieren einer Variablen, ich kann so um mehr als 1 verändern.
$zahl = 5; $zahl +=1; echo $zahl; $count = 5; $count -=1; echo $count; $zahl = 5; $zahl +=5; echo $zahl; $count = 5; $count -=5; echo $count; $count = 5; $count .=5; // nicht so echo $count;
goto
sprungziel:, goto
Die Gefahr besteht, dass durch goto der Code unübersichtlich wird.
Der goto Befehl ermöglicht mir eigene Schleifen zu konstruieren, indem ich innerhalb meines Codes ein Sprungziel definiere und eine Bedingung, zu der dorthin (oder nicht mehr) gesprungen wird.
Das Sprungziel hat einen Namen mit einem Doppelpunkt, dem goto-Befehl wird das Sprungziel ohne Doppelpunkt angefügt. Goto unterliegt folgenden Einschränkungen: Das Sprungziel muss sich in der aktuellen Datei und im gleichen Kontext befinden, aus einer Funktion oder Methode kann weder herausgesprungen noch in sie hineingesprungen werden. Auch kann nicht in eine Schleife oder in eine switch-Anweisung hineingesprungen werden, aber ich kann aus diesen hinausspringen. Goto wird darum oft als break verwendet.
continue und break
continue; break;
continue und break werden auch innerhalb von foreach Schleifen bei den Arrays verwendet.
Beispiel bei Nummerischen Arrays
continue und break werden innerhalb von Schleifen verwendet, continue um den aktuellen Durchlauf abzubrechen (das Ende überspringen) und beim nächsten Durchlauf fortzufahren, break um die Schleife zu verlassen. Beiden Anweisungen kann eine Zahl (nummerisches Argument) mitgegeben werden, welche betimmt, aus wievielen sie umgebenden Schleifen ausgebrochen werden soll; es ist ja möglich, Schleifen ineinander zu verschachteln.
foreach() - Schleife
Die foreach Schleife dient ausschliesslich dem Durchlaufen von Arrays. Siehe bei Array Numerisch oder auch bei Array Assoziativ