Endless for loop
Beste PHP'ers, ik heb een for loop die in een lus blijft hangen, maar ik snap maar niet waarom. Dit is de code:
for ($i = 10; $i = 23.5; $i = $i + .5)
{
echo '<option value="'.$i.'">'.$tijdweergave.'</option>';
}
Het gaat echt om de loop, als ik de echo weglaat blijft hij ook oneindig laden.....
Iemand enig idee?? Thanks!
for ($i = 10; $i = 23.5; $i = $i + .5)
{
echo '<option value="'.$i.'">'.$tijdweergave.'</option>';
}
Het gaat echt om de loop, als ik de echo weglaat blijft hij ook oneindig laden.....
Iemand enig idee?? Thanks!
Gebruik je niet-integer getallen, dan moet je niet met een exacte test eindigen, maar met een vergelijking:
for ($i = 10; $i <= 23.5; $i = $i + .5)
(huh... er stond een *toekenning*)
for ($i = 10; $i <= 23.5; $i = $i + .5)
(huh... er stond een *toekenning*)
Je moet als tweede parameter van je for loop $i < 23.5 zetten. Als ie tot en met 23.5 moet gaan doe je $i < 24.
Ik weet niet waar het aan ligt maar vermoed dat het te maken heeft met het feit dat het getal niet een integer is. Kun je niet dit doen:
23.5 - 10 = 13.5
13.5 * 2 = 27
27 + 10 = 37
En dan geen .5 gebruiken maar 1
23.5 - 10 = 13.5
13.5 * 2 = 27
27 + 10 = 37
En dan geen .5 gebruiken maar 1
Gewijzigd op 14/01/2011 16:28:57 door The Ultimate
Jens V op 14/01/2011 16:24:58:
Je moet als tweede parameter van je for loop $i < 23.5 zetten. Als ie tot en met 23.5 moet gaan doe je $i < 24.
Thanks! Dit was hem :)
@Ultimate: Nee, ik visualiseer het als tijd. 13.5 zet ik om naar 13:30 in PHP. Als ik met andere waardes ga werken is het niet meer overzichtelijk.
Maar bedankt voor alle reacties!
Waarschijnlijk doet dit het ook:
for ($i = 10; $i == 23.5; $i = $i + .5)
for ($i = 10; $i == 23.5; $i = $i + .5)
Nick K op 14/01/2011 16:29:46:
Thanks! Dit was hem :)
@Ultimate: Nee, ik visualiseer het als tijd. 13.5 zet ik om naar 13:30 in PHP. Als ik met andere waardes ga werken is het niet meer overzichtelijk.
Maar bedankt voor alle reacties!
Jens V op 14/01/2011 16:24:58:
Je moet als tweede parameter van je for loop $i < 23.5 zetten. Als ie tot en met 23.5 moet gaan doe je $i < 24.
Thanks! Dit was hem :)
@Ultimate: Nee, ik visualiseer het als tijd. 13.5 zet ik om naar 13:30 in PHP. Als ik met andere waardes ga werken is het niet meer overzichtelijk.
Maar bedankt voor alle reacties!
$tijd = 13.5 * 2; Dat was mijn gedachte ;-)
Maar goed, je hebt inmiddels een vele betere oplossing gevonden.
- SanThe - op 14/01/2011 16:35:56:
Waarschijnlijk doet dit het ook:
for ($i = 10; $i == 23.5; $i = $i + .5)
for ($i = 10; $i == 23.5; $i = $i + .5)
Dat raad ik beslist af, vanwege floating point-afrondingsproblemen. Door het verhuizen naar een andere machine kan code die op deze manier eerder goed werkte plotseling falen--dat willen we niet.
Bas Cost Budde op 14/01/2011 16:41:36:
Dat raad ik beslist af, vanwege floating point-afrondingsproblemen. Door het verhuizen naar een andere machine kan code die op deze manier eerder goed werkte plotseling falen--dat willen we niet.
- SanThe - op 14/01/2011 16:35:56:
Waarschijnlijk doet dit het ook:
for ($i = 10; $i == 23.5; $i = $i + .5)
for ($i = 10; $i == 23.5; $i = $i + .5)
Dat raad ik beslist af, vanwege floating point-afrondingsproblemen. Door het verhuizen naar een andere machine kan code die op deze manier eerder goed werkte plotseling falen--dat willen we niet.
Jij zegt het, ik dacht het.
Je hebt gelijk . Beter is de <= gebruiken.
Nog beter is < 24.
Gewijzigd op 14/01/2011 16:45:37 door - SanThe -




