Unterschied while / for - Schleife in PHP?

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.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Du kannst jede for- durch eine while Schleife ersetzen. Eine for Schleife ist im Grunde nur eine abkürzende Schreibweise.

PWolff  29.03.2018, 00:08

Außerdem ist eine for-Schleife für "Durchzählungen" übersichtlicher, wenn man sie richtig gestaltet.

0

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.

triopasi  29.03.2018, 00:15

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").

1

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.