[gelöst]for Schleife: Bedingung == nicht erlaubt?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

[gelöst]for Schleife: Bedingung == nicht erlaubt?

Beitrag von shwepsi »

Hallo,

ich habe eben locker eine halbe Stunde an einer for Schleife gesessen, sie wollte einfach nicht starten, die ich zum Schluss auf

Code: Alles auswählen

for ($i = 1; $i == 10; $i++)
{
	echo $i . "<br>";
}
reduziert habe...

Als Grund stellte sich die Bedingung herraus, das '==' ist dort scheinbar nicht erlaubt, kann das sein?
Zuletzt geändert von shwepsi am 03.11.2004 22:59, insgesamt 1-mal geändert.
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Erlaubt ist das schon - nur funktionieren wird's trotzdem nicht...
http://de2.php.net/for hat geschrieben:Zu Beginn jedes Durchlaufs wird nun ausdr2 geprüft. Wenn dieser TRUE ist, fährt die Schleife mit der Ausführung der nachfolgenden Anweisung(en) fort. Ist das Ergebnis FALSE, wird die Schleife beendet.
Da $i im ersten Durchlauf nicht 10 (sondern 1) ist, bricht die Schleife - berechtigterweise - ab.
Da gehört keine Abbruchsbedindung sondern eine Wahr/Falsch-Prüfung zur Fortsetzung hin.

Code: Alles auswählen

$i <= 10
könnte helfen ;-)

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

THX, auf die Lösung bin ich schliesslich auch gekommen ...
(deswegen frug ich auch explizit nach ==)
Zu Beginn jedes Durchlaufs wird nun ausdr2 geprüft. Wenn dieser TRUE ist, fährt die Schleife mit der Ausführung der nachfolgenden Anweisung(en) fort. Ist das Ergebnis FALSE, wird die Schleife beendet.
Das interessierte mich dann aber doch, jetzt verstehe ich warum es bei == nicht klappt

Also THX nochmal

(das Chaos der eigenen Worte durchliest :oops:
ich glaube ich sollte ins Bett....)
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

shwepsi hat geschrieben:Das interessierte mich dann aber doch, jetzt verstehe ich warum es bei == nicht klappt

Also THX nochmal

(das Chaos der eigenen Worte durchliest :oops:
ich glaube ich sollte ins Bett....)
Tja Sinn und Zweck einer kopfgesteuerten/fußgesteuerten/Zählschleife ist es Programmcode zu wiederholen und dies kann man nur erreichen wenn nach jedem Schleifendurchlauf geprüft wird ob die Bedingung noch zutrifft/nicht zutifft......

Tritt die Bedingung nie in Kraft wird bei einer kopfgesteuerten Schleife nie der Code durchlaufen...
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag von Christian_W »

Wenn Du die Schleife unbedingt genau bei 10 abbrechen willst mach's doch einfach so:

Code: Alles auswählen

for ($i = 1; $i != 10; $i++)
{
   echo $i . "<br>";
}
Eine derartige Abfrage birgt aber immer die Gefahr einer Endlosschleife. Was wenn (aus welchem Grund auch immer) die 10 übersprungen wird? ;)

Gruß Christian
---
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Christian_W hat geschrieben:Wenn Du die Schleife unbedingt genau bei 10 abbrechen willst mach's doch einfach so:

Code: Alles auswählen

for ($i = 1; $i != 10; $i++)
{
   echo $i . "<br>";
}
Eine derartige Abfrage birgt aber immer die Gefahr einer Endlosschleife. Was wenn (aus welchem Grund auch immer) die 10 übersprungen wird? ;)

Gruß Christian
Zauberwort break :wink:
Antworten

Zurück zu „Coding & Technik“