Der Martin: for Schleife

Beitrag lesen

Hallo,

na dann wollen wir mal :-)

for ($kw = 1; $kw <= 20; $kw++)
{
$kw;
}
Fragen wir uns, was diese Schleife tut: Sie startet mit der Variable kw und dem Wert 1, zählt diesen dann bis 20 hoch. In der Schleife passiert _gar nichts_ da steht die nichts-sagende Variable $kw

Genau. Als Anweisung aufgefasst: Lies den momentanen Wert von $kw und tu nichts damit.

Wenn du das mit echo so ausgibts, dann steht da der Wert von $kw _nach_ der Schleife

Richtig.

also der letzte = 20.

Falsch.
Die for-Schleife führt *erst* die Iterations-Anweisung (hier: $kw++) aus und prüft *dann* die Abbruchbedingung. Das führt dazu, dass die Laufvariable *nach* der Schleife den Endwert+1 hat, in diesem Beispiel 21, nicht 20. Allerdings wird die Schleife mit dem Wert 21 korrekterweise nicht mehr durchlaufen.
Dieses Verhalten der for-Schleife kenne ich schon von C, da ist es so definiert, und Javascript verhält sich genauso. Bei PHP war ich mir im Moment nicht absolut sicher, deshalb habe ich es ausprobiert.

Hätte mich auch gewundert, wenn das gleiche Sprachkonstrukt in PHP signifikant anders implementiert ist als in anderen, ähnlich strukturierten Sprachen.

Schönen Abend noch,
 Martin

--
Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
Außer bei Microsoft. Da ist es umgekehrt.