Unterschiede zwischen einer while-Schleife und einer for-Schleife in PHP?

7

Ich lese gerade ein eBook über PHP, und der Autor bemerkte, dass der Unterschied zwischen einer while-Schleife und einer for-Schleife darin besteht, dass die for-Schleife zählt, wie oft sie ausgeführt wird.

Also nimm das:

%Vor%

Aber wäre das nicht dasselbe wie

? %Vor%

Oder gibt es einige andere Unterschiede, auf die er nicht hingewiesen hat? (Abgesehen von der Verwendung der while-Schleife, wenn Sie sich nicht sicher sind, wie lange die Bedingung bestehen bleibt, z. B. das Auswählen von Zeilen aus einer Datenbank)

Ich meine, wenn das der einzige Unterschied ist, kann ich nicht einfach die for-Schleife verwenden und stattdessen die while-Schleife verwenden?

    
Rob 23.04.2010, 13:34
quelle

5 Antworten

9

Können Sie? Ja sicher. Aber ob oder nicht sollte eine ganz andere Frage sein.

Die for -Schleife ist in diesem Szenario besser lesbar und ist definitiv die Konvention, die Sie praktisch in jeder Sprache mit loop-Anweisungen verwenden. Wenn Sie die while -Schleife verwenden, werden sich die Leute wundern, warum Sie keine for -Schleife verwendet haben.

    
Adam Robinson 23.04.2010, 13:37
quelle
11

"Für" drückt Ihre Absichten deutlicher aus

Funktional sind Ihre zwei Beispiele gleich. Aber sie drücken unterschiedliche Absichten aus.

  • while bedeutet 'Ich weiß nicht, wie lange diese Bedingung dauern wird, aber solange es so ist, mach das Ding.'
  • for bedeutet "Ich habe eine bestimmte Anzahl an Wiederholungen, die Sie ausführen können."

Sie können einen verwenden, wenn Sie den anderen meinen, aber es ist schwieriger, den Code zu lesen.

Einige andere Gründe, warum for hier vorzuziehen ist

  • Es ist prägnanter und legt alle Informationen über die Schleife an einem Ort ab
  • Es macht $i zu einer lokalen Variable für die Schleife

Vergessen Sie nicht foreach

Ich persönlich verwende am häufigsten die Schleife in foreach . Wenn Sie solche Dinge tun:

%Vor%

... dann versuche das:

%Vor%

Schneller zu tippen, einfacher zu lesen.

    
Nathan Long 23.04.2010 14:17
quelle
4

Funktionell entspricht eine for -Schleife einer while -Schleife; das heißt, jeder kann als der andere ohne Änderung des Ergebnisses oder der Nebenwirkungen umgeschrieben werden. Jeder hat jedoch unterschiedliche Konnotationen. Eine while -Schleife läuft, solange eine Bedingung gilt; Der Zustand ist statisch, obwohl sich die Umstände ändern. Eine for Schleife läuft über eine Sequenz. Der Unterschied ist wichtig für Programmierer, aber nicht für Programme, ebenso wie die Wahl der Variablennamen für Programmierer wichtig ist, obwohl sie geändert werden können, um funktionell äquivalenten Code zu erzeugen. Ein Schleifenkonstrukt wird je nach Situation mehr Sinn machen als das andere.

    
outis 23.04.2010 13:42
quelle
3

Eine for-Schleife

%Vor%

ist im Prinzip das Gleiche wie eine while-Schleife, die folgendermaßen aufgebaut ist:

%Vor%

Obwohl Sie das eine oder das andere technisch nutzen könnten, gibt es Situationen, in denen while besser funktioniert als for und umgekehrt.

    
gix 23.04.2010 13:44
quelle
0

Es ist eine Frage des Geschmacks, der persönlichen Vorlieben und der Lesbarkeit. Manchmal funktioniert eine while -Schleife besser logisch. Manchmal, ein for .

Wenn ich für meine persönliche Regel keinen Variableninitialisierer benötige, verwende ich while .

Aber eine foreach Schleife ist auf ihre Art nützlich.

Außerdem, im Falle von PHP's Scoping, wo alle Variablen, die nicht innerhalb von Funktionen sind, global sind, wird die Variable weiterhin nach der Schleife leben, egal welche Schleifensteuerung Sie verwenden.

    
amphetamachine 23.04.2010 13:37
quelle

Tags und Links