banner

2.3 Herhalingen

Stel, je wilt de getallen 1 tot en met 100 onder elkaar op een webpagina zetten. Dit kun je natuurlijk handmatig doen, maar dat is tamelijk veel werk. In dat geval zou je een herhalingslus kunnen gebruiken. In zo'n herhalingslus staat code die een bepaald aantal keer herhaald wordt.

<html>
<head>
    <title>Voorbeeld while-lus</title>
</head>
<body>

<?php

  $teller
= 1;

  while(
$teller <= 100 )
  {
    echo
$teller.'<br />';
    $teller = $teller + 1;
  }


?>

</body>
</html>

Kopiëer bovenstaand stukje code en bekijk wat de uitvoer is. Je zult zien dat de getallen 1 tot en met 100 onder elkaar komen te staan.
We zullen nu uitleggen hoe de while-lus precies werkt.


De while-lus

In het voorbeeldje hierboven zie je de while-lus, hetgeen je zou kunnen vertalen als zolang....

De while-lus heeft de volgende vorm:

while( voorwaarde )
{

  // de code die herhaald moet worden staat hier
}

De code die tussen de accolades { en } staat, wordt herhaald zolang aan de voorwaarde is voldaan.
Die voorwaarde is in het voorbeeld in het gele blok bijvoorbeeld: "Herhaal de code, zolang $teller kleiner of gelijk is aan 100."

while( $teller <= 100 )
{

  // de code die hier staat wordt herhaald, zolang $teller kleiner
  // of gelijk is aan 100.

  echo $teller.'<br />';
  $teller = $teller + 1;
}

Je ziet ook in de lus te staan: $teller = $teller + 1. Dat betekent dat de variabele $teller iedere keer dat de lus doorlopen wordt met 1 wordt verhoogd (de code staat namelijk binnen de lus).
Dus als de lus 99 keer is doorlopen, dan is de $teller gelijk aan 99. Dan wordt er 1 bij opgeteld, zodat de $teller gelijk is aan honderd. Als er dan nóg 1 bij opgeteld wordt, is de $teller gelijk aan 101. De voorwaarde ($teller <= 100) is dan niet meer waar, dus PHP stopt met de herhaling en gaat verder met de code die erna staat.

OPDRACHT 6
Maak een index.php pagina en sla die op in de map opdracht 6.
  1. Zorg dat de code in het grijze vlak bovenaan deze pagina uitgevoerd wordt.
  2. Pas de code in de indexpagina zo aan zodat niet de getallen 1 t/m 100 op het scherm getoond worden, maar de getallen 1 t/m 200.
  3. Pas de code uit opdracht 6b zó aan, dat de getallen 200 t/m 500 op het scherm worden getoond.
  4. Zet nog een nieuwe herhaling in de index.php pagina en laat de uitkomsten van de tafel van drie op het scherm verschijnen. Dus: 3 6 9 12 15 18 21 24 27 30. Gebruik de while-lus.
  5. Maak weer een nieuwe herhaling en zet de volledige tafel van 12 op het scherm. Het is de bedoeling dat de sommetjes helemaal uitgeschreven worden. Het volgende is dus de bedoeling:
    1 x 12 = 12
    2 x 12 = 24
    3 x 12 = 36
    .
    .
    .
    .
    10 x 12 = 120

De For-lus

Ook php kent naast de while-herhaling nog een andere soort herhaling: de for-lus.
Bekijk onderstaande code:
<html>
<head>
    <title>Voorbeeld while-lus</title>
</head>
<body>

<?php

  for(
$teller = 1 ; $teller <= 100 ; $teller++ )
  {
    echo
$teller.'<br />';
  }


?>

</body>
</html>

De for-lus heeft de volgende vorm:

for( startwaarde variabele; eindwaarde variabele; ophoogstappen )
{

  // de code die herhaald moet worden staat hier
}
Met de startwaarde geef je aan wat de beginwaarde is van een variabele die het aantal herhalingen gaat bijhouden.
In ons voorbeeld staat er $teller = 1. Dit betekent dat de startwaarde van de $teller 1 wordt.

Met de eindwaarde geef je aan tot hoelang de herhaling door moet gaan.
In ons voorbeeld staat er $teller <= 100. Dit betekent dat de $teller blijft ophogen totdat hij 100 wordt.

Met de ophoogstappen geef je aan met hoeveel de variabele steeds moet ophogen na elke herhaling.
In ons voorbeeld staat er $teller++. Dit is een verkorte schrijfwijze van $teller = $teller + 1. Dit wil dus zeggen dat de $teller elke stap met 1 verhoogd wordt.

Scheidingsteken is steeds een puntkomma ; !!

OPDRACHT 7
Maak een index.php pagina en sla die op in de map opdracht 7.
  1. Laat de getallen 7 t/m 13 in een tabel weergeven d.m.v. een for-herhaling. Hierbij moeten de getallen horizontaal (dus naast elkaar) staan. Om elk getal is een border van de cel zichtbaar gemaakt.
  2. Pas opdracht 7a zó aan, dat de getallen 14 t/m 20 in een tabelrij onder de andere rij worden getoond.
  3. Voor de die-hards (NT-ers): Maak in index.php een nieuwe tabel met de getallen 1 t/m 100 in rijen van 10. Dit moet gebeuren met 2 for-lussen!