Nur größer/kleiner in for-Schleifen?
Hugo Egon Balder
- php
Hallo Forum!
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, aber die for-Schleife
for($i=1;$i=10;$i++)
{
// ... foo ...
}
nicht und zu einem "Internal Error 500" führt. (Egal, ob ich '$i=10' oder '$i==10' verwende.) Darf man bei der Bedingung einer for-Schleife nur eine kleiner-als oder größer-als Bedingung verwenden?
Danke für jede Antwort!
MfG
Hugo Egon Balder
Hi,
for($i=1;$i=10;$i++)
{
// ... foo ...
}
>
> nicht und zu einem "Internal Error 500" führt.
Und was steht im error.log als tatsächliche Fehler-Ursache?
Wird der Fehler evtl. vom Code innerhalb oder nach der Schleife verursacht?
> Darf man bei der Bedingung einer for-Schleife nur eine kleiner-als oder größer-als Bedingung verwenden?
Nein, man kann jede beliebige Bedingung verwenden.
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
Hallo Dedlfix, hallo Andreas!
Ich sehe schon - mein Denkfehler war einfach eine falsche wörtliche Definition:
Die Schleife wird natürlich nicht so lange durchlaufen, _bis_ eine Bedingung zutrifft, sondern _so lange_ eine Bedingung zutrifft. Und das ist ein gewaltiger Unterschied!
Meine Frage ist somit beantwortet. Danke für den Denkanstoß!
MfG
Hugo Egon Balder
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.