Unterschied while / for - Schleife in PHP?
Ich lerne zur Zeit PHP durch ein Video-Bootcamp. Im Moment werden dort while & for Schleifen behandelt. Ich denke, ich weiß wie beides funktioniert und könnte sowas grob auch anwenden, aber was ich nicht verstehe. Wo genau ist jetzt der Unterschied? Haben die nicht beide die selbe Funktion? Wann nutze ich das eine, wann das andere, oder ist das egal? :D
5 Antworten
Da eine for-Schleife eine andere Schreibweise für eine while-Schleife ist, ist es im Prinzip egal, welche man nimmt.
for (init; test; incr) {
body;
}
ist exakt äquivalent zu
init;
while (test) {
body;
incr;
}
Man nimmt das, was jeweils übersichtlicher ist.
Wenn ich eine einzelne Variable einen vorher bekannten Bereich durchlaufen lasse (einen Zahlenbereich oder eine "Aufzählung"), nehme ich for / foreach, sonst while.
Du kannst jede for- durch eine while Schleife ersetzen. Eine for Schleife ist im Grunde nur eine abkürzende Schreibweise.
Außerdem ist eine for-Schleife für "Durchzählungen" übersichtlicher, wenn man sie richtig gestaltet.
eine For-Schleife benutzt man normalerweise, wenn man einen Zähler hochzählt und alle Zahlen durchlaufen will.
Also z. B. um ein Array auszulesen.
Eine While-Schleife läuft solange, wie eine Bedingung erfüllt ist und endet, wenn diese nicht mehr erfüllt ist. Die Häufigkeit des Durchlaufens steht normalerweise nicht fest.
Man benutzt while z. B., wenn man ein Ergebnis aus einer Datenbank ausliest und vorher nicht weiß, wieviele Zeilen herauskommen. Dann geht man so lange durch die Schleife, bis die Datenbank keine neue Zeile mehr liefert.
Natürlich kann man aber auch eine for-Schleife durch eine While-Schleife ausdrücken.
ich erinnere mich dunkel , aber
for ist für eine Wiederholung, ganz starr , also festgelegte anzahl von Wdh.
while läßt etwas laufen ,bis eine bestimmte Bedingung erfüllt ist , und bricht dann ab.
Auf https://secure.php.net/manual/de/control-structures.for.php findet ihr ein paar Beispiele, wie man eine for-Schleife als allgemeine while-Schleife verwenden (missbrauchen) kann und andere Möglichkeiten, die Übersichtlichkeit einer for-Schleife zu sabotieren.
Bei einer for-Schleife zählt der Computer von einer Anfangszahl bis zu einer Endzahl und wiederholt dabei jedes Mal den Codeblock („Schleifenrumpf“). Die aktuelle Zahl wird in eine Variable („Iterator“) gesetzt, damit sie bei Bedarf in dem Codeblock Verwendung finden kann. Häufig ist die Zählschleife auf Ganzzahlen beschränkt.
Bei einer kopfgesteuerten Schleife (while-Schleife) erfolgt die Abfrage der Bedingung, bevor der Schleifenrumpf ausgeführt wird, also am Kopf des Konstruktes. Eine logische Operation kann beispielsweise sein: (x > 4) Solange diese Bedingung wahr ist, werden die Anweisungen innerhalb der Schleife ausgeführt. Wird der Inhalt der logischen Operation nicht im Schleifenrumpf verändert, ist diese Kontrollstruktur meist nicht die richtige, weil diese Schleife sonst kein einziges Mal durchlaufen wird oder unendlich lang läuft.
Bei einer fußgesteuerten Schleife (do-while-Schleife) erfolgt die Abfrage der Bedingung, nachdem der Schleifenrumpf ausgeführt wurde, also am Fuß des Konstruktes. Wie für die kopfgesteuerte Schleife gilt: Wird der Inhalt der logischen Operation nicht im Schleifenrumpf verändert, ist diese Kontrollstruktur meist nicht die richtige, weil diese Schleife sonst genau einmal durchlaufen wird oder unendlich lang läuft.
1.) Auch FOR kann eine dynamische Bedingung haben und ist daher keineswegs starr.
2.) WHILE führt den Code aus SO LANG die Bedingung wahr ist, daher auch das Wort "while" (deu "während").