Springen naar inhoud

[php] loops


  • Log in om te kunnen reageren

#1

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 16 januari 2008 - 14:34

Ik ben momenteel bezig met het leren van PHP, maar ben op een probleempje gestuit bij het maken van loops.

Om de pagina zelf een reeks van nummers van 1 t/m 25 te laten maken, die dan achter elkaar komen, gebruik je de volgende code:
<?php
	 for($i = 1; $i <= 25; $i++)
	 {
		  echo $i.' ';
	 }
?>
Dit betekent dus dat de variabele $i, beginnend bij waarde 1, elke keer met één toeneemt, zolang deze kleiner of gelijk is aan 25. Vervolgens worden alle waarden die eraan voldoen achter elkaar weergegeven op het scherm. Dit kun je hier ook zien.

Maar wat nu als ik wil dat de waarde steeds met 2 toeneemt in plaats van 1? Want ik wil als resultaat de volgende serie krijgen:
1 3 5 7 9 11 13 15 17 19 21 23 25

Ik heb deze code al geprobeerd:
<?php
	 for($i = 1; $i <= 25; $i+2)
	 {
		  echo $i.' ';
	 }
?>
Dit is net als wanneer je gewoon rekent in PHP. Het levert echter een scherm vol met 1'en op.

Ook deze code heb ik al geprobeerd:
<?php
	 for($i = 1; $i <= 25; $i+++)
	 {
		  echo $i.' ';
	 }
?>
Ik dacht dat een extra + er extra aan zou toevoegen. Dit was ook niet waar.

Mijn vraag is daarom: hoe kun je dan wel een loop maken, waarbij het steeds met 2 toeneemt en niet de 1, zoals ik die uit deze tutorial heb gehaald?
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 16 januari 2008 - 14:40

Ik zit niet zo in php, maar volgens mij werkt dit soortgelijk in java/C. i++ is equivalent met i = i+1, maar i+2 bestaat niet als los ding. Je zal dus moeten tikken i=i+2 i.p.v. i+2.

#3

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 16 januari 2008 - 15:58

Werkt niet :D Ik krijg nu een scherm met eerst een 1 en dan de rest van het scherm gevult met 2'en... ;)
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

#4

zpidermen

    zpidermen


  • >1k berichten
  • 1623 berichten
  • Ervaren gebruiker

Geplaatst op 16 januari 2008 - 17:46

<?php
	 for ($i=1; $i<=25; $i=$i+2)
	 {
		  echo $i; echo ' ';
	 }
?>
Dat het rijtje met een 1 begint, is logisch, omdat achter het haakje $i=1 staat. Als je met een ander getal wil beginnen, moet je dat veranderen naar iets als $i=2.

Veranderd door zpidermen, 16 januari 2008 - 17:53

Beter kaal als geen haar want een kip snurkt

#5

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 16 januari 2008 - 17:58

<?php
	 for ($i=1; $i<=25; $i=$i+2)
	 {
		  echo $i; echo ' ';
	 }
?>
Dat het rijtje met een 1 begint, is logisch, omdat achter het haakje $i=1 staat. Als je met een ander getal wil beginnen, moet je dat veranderen naar iets als $i=2.

Dat is mijn probleem niet. Het moet beginnen met een 1, maar daarna steeds met 2 toenemen. Het doel is namelijk om als resultaat dit te krijgen:
1 3 5 7 9 11 13 15 17 19 21 23 25
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

#6

zpidermen

    zpidermen


  • >1k berichten
  • 1623 berichten
  • Ervaren gebruiker

Geplaatst op 16 januari 2008 - 18:02

Dat is mijn probleem niet. Het moet beginnen met een 1, maar daarna steeds met 2 toenemen. Het doel is namelijk om als resultaat dit te krijgen:

1 3 5 7 9 11 13 15 17 19 21 23 25

Eh... kijk nog eens goed naar mijn code...
Beter kaal als geen haar want een kip snurkt

#7

Ger

    Ger


  • >5k berichten
  • 16444 berichten
  • Technicus

Geplaatst op 16 januari 2008 - 18:28

<?php
	 for ($i=1; $i<=25; $i=$i+2)
	 {
		  echo $i; echo ' ';
	 }
?>

Geheel correct.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

#8

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 16 januari 2008 - 18:30

Overheen gekeken ;) Ik zie nu ook al wat ik zelf fout deed.

Bedankt!
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

#9

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 16 januari 2008 - 18:42

<?php
	 for ($i=1; $i<=25; $i=$i+2)
	 {
		  echo $i; echo ' ';
	 }
?>

Trouwens nog enkele tips:

for($i=0;$i<25;$i+=2) is syntax mooier. Je kan $i+=2 zien als $i=$i+2, en dit werkt voor alle getallen. Ook laat je een forlus meestal best beginnen bij 0 (handiger als je met tabellen e.d. gaat werken). Overigens werkt $i-=2, $i/=2, $i*=2 ook ;)

Veranderd door Cycloon, 16 januari 2008 - 18:43


#10

zpidermen

    zpidermen


  • >1k berichten
  • 1623 berichten
  • Ervaren gebruiker

Geplaatst op 16 januari 2008 - 18:49

Trouwens nog enkele tips:

for($i=0;$i<25;$i+=2) is syntax mooier. Je kan $i+=2 zien als $i=$i+2, en dit werkt voor alle getallen. Ook laat je een forlus meestal best beginnen bij 0 (handiger als je met tabellen e.d. gaat werken). Overigens werkt $i-=2, $i/=2, $i*=2 ook ;)

Weet ik, maar aangezien TS aangaf dat hij net met PHP was begonnen, leek het mij handiger om de code zo duidelijk mogelijk op te stellen (inclusief spatie achter elke ';'). Die mooiere syntax is voor later, alles op z'n tijd. Dat echo gedeelte in de lus had ik bijv. ook anders kunnen opstellen. Maar goed, de vraag van TS is in elk geval beantwoord :D

Veranderd door zpidermen, 16 januari 2008 - 18:50

Beter kaal als geen haar want een kip snurkt

#11

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 16 januari 2008 - 19:33

<?php
	 for ($i=1; $i<=25; $i=$i+2)
	 {
		  echo $i; echo ' ';
	 }
?>

Trouwens nog enkele tips:

for($i=0;$i<25;$i+=2) is syntax mooier. Je kan $i+=2 zien als $i=$i+2, en dit werkt voor alle getallen. Ook laat je een forlus meestal best beginnen bij 0 (handiger als je met tabellen e.d. gaat werken). Overigens werkt $i-=2, $i/=2, $i*=2 ook :D

Ziet er ook mooi uit ja ;) Maar het ging mij vooral om hoe ik het kan laten doen. Het laten beginnen bij 0 hoefde daarom ook niet, dat heb ik recht uit de tutorial overgenomen. Toch bedankt voor de tip :D
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...

#12

Cycloon

    Cycloon


  • >1k berichten
  • 4810 berichten
  • VIP

Geplaatst op 16 januari 2008 - 20:11

Ziet er ook mooi uit ja ;) Maar het ging mij vooral om hoe ik het kan laten doen. Het laten beginnen bij 0 hoefde daarom ook niet, dat heb ik recht uit de tutorial overgenomen. Toch bedankt voor de tip :D


Ik vond het alleszins wel belangrijk om het te vertellen omdat je nogal vaak mensen hard ziet vasthouden aan de methode die jij hier gebruikte. En dan zie je later in hun tabbelen zaken als $tabel[$i-1] optreden of andere onnodige work-arounds. Wat je ook wel vaak ziet zijn dingen als for($i=0;$i<=24;$i++), zoiets is iets minder doorzichtig als for($i=0;$i<25;$i++) waar je direct duidelijk ziet dat je 25 loops zal maken. Het zijn feitelijk kleine details, maar het maakt het programmeren iets makkelijker en overzichtelijker imo :D

Hopelijk denk je nog eens aan mij als je dit tegenkomt :(

#13

zpidermen

    zpidermen


  • >1k berichten
  • 1623 berichten
  • Ervaren gebruiker

Geplaatst op 16 januari 2008 - 20:35

Wat je ook wel vaak ziet zijn dingen als for($i=0;$i<=24;$i++), zoiets is iets minder doorzichtig als for($i=0;$i<25;$i++) waar je direct duidelijk ziet dat je 25 loops zal maken.

Ik doe eigenlijk ook altijd for($i=0;$i<25;$i++), maar dan met spaties: for ($i=0; $i<25; $i++) wat het nalezen of debuggen van je code net even makkelijker maakt.
Beter kaal als geen haar want een kip snurkt

#14

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 17 januari 2008 - 00:40

dingen als for($i=0;$i<=24;$i++), zoiets is iets minder doorzichtig als for($i=0;$i<25;$i++) waar je direct duidelijk ziet dat je 25 loops zal maken.

Als ervaren programmeur denk je over zoiets niet eens meer na, maar ik kan me best voorstellen dat het voor beginners niet duidelijk is wat er met i<25 precies gebeurt (tot 25 of tot en met? stopt de for loop nadat hij hem voor de laatste keer heeft uitgevoerd en i<25 geldt niet langer, of gebeurt die check aan het begin? enz).
In theory, there's no difference between theory and practice. In practice, there is.

#15

PdeJongh

    PdeJongh


  • >1k berichten
  • 2005 berichten
  • VIP

Geplaatst op 17 januari 2008 - 10:04

Even bewijzen dat er ook beginners zijn die dat wel al doorhebben :D

De tellling begint bij 0, want $i=0. Zolang $i kleiner of gelijk is aan 24, komt er elke keer 1 bij de $i.

Jaja, goed hè ;)
...verhit de dichloormono-oxide tot 277 graden Celcius en geniet van het effect...





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures