[PHP] Simpele For-lus
-
- Berichten: 41
[PHP] Simpele For-lus
Ik probeer voor mijn opleiding een for-lus te schrijven die de cijfers 20 t/m 10 afdrukken elk op een aparte regel, ook in die volgorde.
Om de een of andere reden blijft mijn uitvoer naar de webbrowser blanco.
Dit is mijn code momenteel:
<?php
for ($start_num = 20, $end_num = 10;
$start_num < $end_num;
$start_num = $start_num--)
{
print ("$start_num<BR>");
}
?>
Ik heb al naar de manual op php.net gekeken, maar kan maar niet vinden wat ik nou precies mis.
Bij voorbaat dank!
Om de een of andere reden blijft mijn uitvoer naar de webbrowser blanco.
Dit is mijn code momenteel:
<?php
for ($start_num = 20, $end_num = 10;
$start_num < $end_num;
$start_num = $start_num--)
{
print ("$start_num<BR>");
}
?>
Ik heb al naar de manual op php.net gekeken, maar kan maar niet vinden wat ik nou precies mis.
Bij voorbaat dank!
-
- Berichten: 7.068
Re: [PHP] Simpele For-lus
$start_num = 20
$end_num = 10;
Dus:
$start_num < $end_num
20 < 10
false
$end_num = 10;
Dus:
$start_num < $end_num
20 < 10
false
-
- Berichten: 41
Re: [PHP] Simpele For-lus
Dus toch, ik zat hier zolang over te twijfelen. Bedankt!
Maar hoe zorg ik er dan voor dat er van 20 wordt afgeteld naar 10, toen ik deze check gebruikte in een while-lus & do-while gaf hij namelijk wel de output: 20, 19, 18, ... 10.
Maar hoe zorg ik er dan voor dat er van 20 wordt afgeteld naar 10, toen ik deze check gebruikte in een while-lus & do-while gaf hij namelijk wel de output: 20, 19, 18, ... 10.
-
- Berichten: 41
Re: [PHP] Simpele For-lus
Kan ik heel die check weglaten en bijvoorbeeld de lus laten stoppen d.m.v.
if ($start_num == 9)
break;
if ($start_num == 9)
break;
-
- Berichten: 41
Re: [PHP] Simpele For-lus
Of:
<?php
for ($start_num = 20, $end_num = 10;
$end_num <= $start_num;
$start_num--)
{
print ("$start_num<BR>");
}
?>
<?php
for ($start_num = 20, $end_num = 10;
$end_num <= $start_num;
$start_num--)
{
print ("$start_num<BR>");
}
?>
- Berichten: 17.659
Re: [PHP] Simpele For-lus
Je syntax is verkeerd. Zoals je op de manual kunt teruglezen, heb je 3 expressies, gescheiden door
Je start met een beginpunt; dat is expressie 1. Dus:
Expressie 2 is iets wat aan het begin van iedere loop wordt gecontroleerd. Zolang die expressie TRUE is, wordt de loop uitgevoerd. Dus:
Als laatste heb je nog een expressie die aan het eind van iedere loop uitgevoerd. In dit geval wil je een stapje naar beneden;
Heb je hiermee voldoende bagage om het verder uit te werken?
;
.Je start met een beginpunt; dat is expressie 1. Dus:
$i = 20
.Expressie 2 is iets wat aan het begin van iedere loop wordt gecontroleerd. Zolang die expressie TRUE is, wordt de loop uitgevoerd. Dus:
$i >= 10
.Als laatste heb je nog een expressie die aan het eind van iedere loop uitgevoerd. In dit geval wil je een stapje naar beneden;
$i--
.Heb je hiermee voldoende bagage om het verder uit te werken?
-
- Berichten: 41
Re: [PHP] Simpele For-lus
Super, bedankt. Het kan eigenlijk dus beter d.m.v.:
<?php
for ($i = 20;
$i >= 10;
$i--)
{
print ("$i<BR>");
}
?>
Of is dit niet correct?
<?php
for ($i = 20;
$i >= 10;
$i--)
{
print ("$i<BR>");
}
?>
Of is dit niet correct?
- Berichten: 17.659
Re: [PHP] Simpele For-lus
Heb je het al uitgeprobeerd? Wat is je output, of krijg je debug messages?
-
- Berichten: 7.068
-
- Berichten: 8
Re: [PHP] Simpele For-lus
<?php
for ($x = 20; $x >= 10; $x -= 1) {
print($x."<br>");
}
?>
of
<?php
$start_num = 20;
$end_num = 10;
for ($start_num; $start_num >= $end_num; $start_num -= 1) {
print($start_num."<br>");
}
?>
for ($x = 20; $x >= 10; $x -= 1) {
print($x."<br>");
}
?>
of
<?php
$start_num = 20;
$end_num = 10;
for ($start_num; $start_num >= $end_num; $start_num -= 1) {
print($start_num."<br>");
}
?>
- Berichten: 17.659
Re: [PHP] Simpele For-lus
@Evilbro:
Klopt, het is niet zozeer een syntax error, wat dat betreft compiled het gewoon. Maar dit:
Zegt eigenlijk:
1. $start_num = 20, $end_num = 10
2. Indien 20 < 10 (nooit)
3. 20 blijft 20 (maar vanwege 2 kom ik hier niet)
Dat laatste gaat dus fout aangezien je éérst
Oftewel: zowel de tweede als derde expressie leveren niet op wat hij voor ogen had; en dat komt doordat hij de syntax verkeerd interpreteert.
Doe maar eens:
Verder werkt de
@Noob; je hebt het dus goed. Zie je ook dat ik de code opmaak met code tags? Daardoor wordt het wat leesbaarder.
Klopt, het is niet zozeer een syntax error, wat dat betreft compiled het gewoon. Maar dit:
Code: Selecteer alles
for ($start_num = 20, $end_num = 10;
$start_num < $end_num;
$start_num = $start_num--)
1. $start_num = 20, $end_num = 10
2. Indien 20 < 10 (nooit)
3. 20 blijft 20 (maar vanwege 2 kom ik hier niet)
Dat laatste gaat dus fout aangezien je éérst
$start_num = $start_num
doet (effectief niets dus) en dáárna pas verlaagt met 1. Maar die verlaagde waarde gebruik je vervolgens nooit.Oftewel: zowel de tweede als derde expressie leveren niet op wat hij voor ogen had; en dat komt doordat hij de syntax verkeerd interpreteert.
Doe maar eens:
Code: Selecteer alles
$i = 20;
$a = $i++;
var_dump($i); // output: 21
var_dump($a); // output: 20
$i=...; $i>...; $i--
notatie doorgaans het beste voor dergelijke loops. Dat is ook de standaard zoals je die doorgaans in applicaties zult terugvinden voor dergelijke simpele taken. Dus:
Code: Selecteer alles
for ($i=20; $i>=10; $i--) {
echo $i . '<br>';
}
-
- Berichten: 7.068
Re: [PHP] Simpele For-lus
Misschien moet je dan niet zeggen dat de syntax verkeerd is...
Maar goed, voor de lol:
Code: Selecteer alles
array_map(function($n) {echo ($n . '<br/>');}, range(20, 10, -1));
-
- Berichten: 12.262
Re: [PHP] Simpele For-lus
Ik zie wel iets raars:
$start_num = $start_num--;
normaliter volstaat enkel
$start_num--;
om een getal met 1 te verlagen.
Ik weet niet of dit de oorzaak van enig probleem is of niet, maar het is wel ongebruikelijk.
$start_num = $start_num -1;
is wel logisch, en werkt het beste als je stappen ander dan 1 wilt maken, bijvoorbeeld per 10 wilt op/aftellen in iedere keer dat je door de FOR loop gaat.
$start_num = $start_num--;
normaliter volstaat enkel
$start_num--;
om een getal met 1 te verlagen.
Ik weet niet of dit de oorzaak van enig probleem is of niet, maar het is wel ongebruikelijk.
$start_num = $start_num -1;
is wel logisch, en werkt het beste als je stappen ander dan 1 wilt maken, bijvoorbeeld per 10 wilt op/aftellen in iedere keer dat je door de FOR loop gaat.
-
- Berichten: 41
Re: [PHP] Simpele For-lus
@benm; Ik was dus niet zeker of $start_num--; volstond om het getal continu te verlagen tot de lus false zou zijn.
<?php
for ($start_num = 20, $end_num = 10;
$end_num <= $start_num;
$start_num--)
{
print ("$start_num<BR>");
}
?>
of
<?php
for ($i = 20;
$i >= 10;
$i--)
{
print ("$i<BR>");
}
?>
Werkte voor mij dus prima, de precieze syntax van de for-lus was me niet helemaal duidelijk.
@evilbro heeft me er op gewezen dat ik de lus altijd op false zou laten eindigen d.m.v. $start_num <= $end_num. Wat ik compleet over het hoofd gezien heb.
@ger; Bedankt voor de extra duidelijk uitleg over waarom een bepaalde syntax wordt gebruikt, dit was een van de dingen waarover ik onder andere aan het twijfelen was!
<?php
for ($start_num = 20, $end_num = 10;
$end_num <= $start_num;
$start_num--)
{
print ("$start_num<BR>");
}
?>
of
<?php
for ($i = 20;
$i >= 10;
$i--)
{
print ("$i<BR>");
}
?>
Werkte voor mij dus prima, de precieze syntax van de for-lus was me niet helemaal duidelijk.
@evilbro heeft me er op gewezen dat ik de lus altijd op false zou laten eindigen d.m.v. $start_num <= $end_num. Wat ik compleet over het hoofd gezien heb.
@ger; Bedankt voor de extra duidelijk uitleg over waarom een bepaalde syntax wordt gebruikt, dit was een van de dingen waarover ik onder andere aan het twijfelen was!