dedlfix: Nur größer/kleiner in for-Schleifen?

Beitrag lesen

Tach!

Ich finde leider weder im php Manual, noch sonstwo im Netz eine Antwort auf die Frage, wieso die for-Schleife

for($i=1;$i<11;$i++)

{
    // ... foo ...
  }


>   
> funktioniert,  
  
Die allgemeine Funktionsweise und die Bedeutung der Parameter der for-Schleife sind dir nicht bekannt?  
  

> aber die for-Schleife  
>   
> ~~~php

for($i=1;$i=10;$i++)  

>   {  
>     // ... foo ...  
>   }

nicht und zu einem "Internal Error 500" führt.

Die Schlife wird durchlaufen, wenn der zweite Parameter true ergibt. Eine Zuweisung, eine solche hast du mit dem = notiert, ist genauso ein Ausdruck wie beispielsweise eine Addition. Die Addition hat ein Ergebnis, die Zuweisung ebenfalls. Ihr Ergebnis ist der zugewiesene Wert. Wenn du nun immer wieder 10 zuweist, welche im booleschen Kontext einem true entspricht, ist die Bedingung immer erüllt und du hast eine Endlosschleife. Die anderen beiden Parameter spielen keine Rolle, weil du ja immer wieder 10 zuweist.

(Egal, ob ich '$i=10' oder '$i==10' verwende.)

Mit $i = 10 hast du eine Endlosschleife, und irgendein Abbruchmechanismus schlägt dann bei dir zu, der zum 500er führt. Mit $i == 10 läuft die Schleife gar nicht erst los. Der erste Ausdruck ($i = 1) weist $i den Wert 1 zu, damit ist das Ergebnis von $i == 10 false und die Schleife wird abgebrochen. Einen 500er erhältst du jedenfalls nicht bei der ==-Variante.

Darf man bei der Bedingung einer for-Schleife nur eine kleiner-als oder größer-als Bedingung verwenden?

Man darf bei allen drei Parametern jeden beliebigen Ausdruck angeben (sogar mehrere durch Komma getrennte).

dedlfix.