6.1 For - Loops
In deze les gaan we kennismaken met loops in PHP. We leren wat een for-loop is en hoe we die in combinatie met arays kunnen toepassen.
Loops (lus)
Een loop (in het Nederlands "lus") is een stuk code dat onder bepaalde voorwaarden uitgevoerd wordt. Zolang de voorwaarde waar (TRUE) is, wordt de code in de loop steeds opnieuw uitgevoerd. Als in de lus een variabele wordt aangepast, dan heeft deze variabele de nieuwe waarde bij de volgende keer dat de loop wordt uitgevoerd. Totdat de voorwaarde van de loop niet meer waar is. De voorwaarde moet zorgvuldig worden gekozen; een foutje kan er voor zorgen dat de loop niet meer stopt. Mocht dat toch gebeuren, dan zorgt PHP dat het script (standaard) na 30 seconden toch wordt gestopt.
De verschillende soorten lussen in PHP lijken op elkaar, alleen is steeds de voorwaarde anders opgebouwd. De while-lus is het meest eenvoudig, de for-lus is wat ingewikkelder en de foreach-lus is er speciaal voor het werken met arrays.
For Loop
For loops komen alle programmeer talen voor. Een loop zorgt ervoor dat een stuk programma code X keer wordt uitgevoerd. De waarde van X hangt af van hoed e loop wordt geprogrammeerd. Eén van de meest gebruiken loops is de for loop.
In de for loop bepaal je in ieder geval een begin- en een eind waarde bijvoorbeeld 1 t/m 10. De loop wordt dan 10 x uitgevoerd. Bijvoorbeeld:
<?php
for($i=0; $i<10; $i++)
{
echo "Hello<br>";
}
echo "Einde loop<br>";
?>
In de for loop staan drie statements:
$i=0; | Dit is de beginwaarde van de index $i |
$i<10; | De loop gaat door zolang deze vergelijking true is |
$i++; | Na elke iteratie (uitvoering van de code in het blok van de loop) wordt dit uitgevoerd. |
{ ....} | Deze code hoort bij de loop en wordt X keer uitegevoerd. |
Dit gebeurt er stap voor stap:
Iteratie | Wat gebeurt er? |
1 | $i=0 |
$i < 10 // als dit waar is voer dan de code uit anders ga door met de code na de loop | |
$i++ // $i wordt nu 1 | |
2 | $i < 10 // nog steeds waar dus voer de code die bij de loop hoort nog een keer uit. |
$i++ //$i wordt nu 2 | |
3 | $i < 10 // nog steeds waar dus voer de code die bij de loop hoort nog een keer uit. |
$i++ //$i wordt nu 3 | |
... | ... |
9 | $i < 10 // nog steeds waar dus voer de code die bij de loop hoort nog een keer uit. |
$i++ //$i wordt nu 9 | |
10 | $i < 10 // NIET meer waar dus de code in de loop wordt niet meer uitgevoerd, de loop stopt! |
Opdracht 1
Bepaal van elk van de volgende loops hoe vaak die wordt uitgevoerd.
for($i=0; $i<10; $i++)
for($i=1; $i<10; $i++)
for($i=0; $i<100; $i++)
for($i=1; $i<100; $i++)
for($k=0; $k<1; $k++)
for($k=1; $k<1; $k++)
for($i=10; $i>0; $i--)
for($i=10; $i>0; $i--)
for($i=10; $i<>4; $i--) // <> betekent 'ongelijk aan'
for($i=2; $i; $i--) // denk aan wanneer $i true of false is
for($i=0; $i>0; $i++)
for($i=1; $i>0; $i++)
Schrijf van elke regel op hoe vaak de loop wordt uitgevoerd.
Opdracht 2
Voer onderstaande code uit en verander deze code door de regels 4 t/m 15 met een loop af te drukken.
<?php
$maanden = array ('Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December');
echo 'Maand 1 is '.$maanden[0].'.<br />';
echo 'Maand 2 is '.$maanden[1].'.<br />';
echo 'Maand 3 is '.$maanden[2].'.<br />';
echo 'Maand 4 is '.$maanden[3].'.<br />';
echo 'Maand 5 is '.$maanden[4].'.<br />';
echo 'Maand 6 is '.$maanden[5].'.<br />';
echo 'Maand 7 is '.$maanden[6].'.<br />';
echo 'Maand 8 is '.$maanden[7].'.<br />';
echo 'Maand 9 is '.$maanden[8].'.<br />';
echo 'Maand 10 is '.$maanden[9].'.<br />';
echo 'Maand 11 is '.$maanden[10].'.<br />';
echo 'Maand 12 is '.$maanden[11].'.<br />';
?>
Opdracht 3a
In de loop kun je ook gebruik maken van de index-variabele $i. Bijvoorbeeld:
<?php
for($i=1; $i<11; $i++) {
echo $i . " * 7 = " . $i*7 . "<br>";
}
?>
$i wordt in deze code gebruikt om de tafel van 7 af te drukken.
Verander de bovenstaande code zodat je een tafel van x kan afdrukken. Maar een variabele $x en geef die voor de loop een waarde. De tafel van $x wordt afgedrukt.
Opdracht 3b
Maak nu een form en vraag de gebruiker welke tafel die wilt afdrukken. Zorg er dan voor dat deze tafel wordt afgedrukt.
Opdracht 4
Het programma hieronder bevat een fout.
<?php
$colors=array('black','red','white');
for($i=0; $i<=3; $i++) {
echo $colors[$i]."<br>";
}
?>
De foutmelding is
Notice: Undefined offset: 3 in /Applications/XAMPP/xamppfiles/htdocs/test.php on line 5 |
Wat betekent "Undefined offset"? Schrijf in je eigen woorden op wat dit betekent en leg uit waarom deze code een foutmelding geeft.
--