Endless for loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nick K

Nick K

14/01/2011 16:22:49
Quote Anchor link
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!
 
PHP hulp

PHP hulp

05/11/2024 15:54:59
 
Bas Cost Budde

Bas Cost Budde

14/01/2011 16:24:48
Quote Anchor link
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*)
 
Jens V

Jens V

14/01/2011 16:24:58
Quote Anchor link
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.
 
The Ultimate

The Ultimate

14/01/2011 16:26:29
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
for($i = 10; $i = 37; $i++){
echo $i;
}

?>


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
 
Nick K

Nick K

14/01/2011 16:29:46
Quote Anchor link
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!
 
- SanThe -

- SanThe -

14/01/2011 16:35:56
Quote Anchor link
Waarschijnlijk doet dit het ook:
for ($i = 10; $i == 23.5; $i = $i + .5)
 
The Ultimate

The Ultimate

14/01/2011 16:38:35
Quote Anchor link
Nick K op 14/01/2011 16:29:46:
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.
 
Bas Cost Budde

Bas Cost Budde

14/01/2011 16:41:36
Quote Anchor link
- SanThe - op 14/01/2011 16:35:56:
Waarschijnlijk doet dit het ook:
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.
 
- SanThe -

- SanThe -

14/01/2011 16:44:41
Quote Anchor link
Bas Cost Budde op 14/01/2011 16:41:36:
- SanThe - op 14/01/2011 16:35:56:
Waarschijnlijk doet dit het ook:
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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.