Suche nach als

for, while Schleifen

Auf dieser Seite:

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
 
}
?>
0
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.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 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.
?>
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.

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;
6, 5, 4, j, j, A2, A1

+=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;
6, 4, 10, 0, 55

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

 


Valid XHTML 1.0 Check den Code.

Redirect >> << if, else, switch Kontrollen
Ich bin hier: > PHP Lehrling >>> for, while Schleifen
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 18.05.2012