๐Ÿ”„

PHP ยท Les 4

Loops

for, while, do-while, foreach, break en continue ยท 20 min

for-loop

De for-loop gebruik je als je weet hoeveel iteraties je wilt.

<?php
// Basis for-loop
for ($i = 0; $i < 5; $i++) {
    echo "Iteratie $i\n";
}

// Aftellen
for ($i = 10; $i >= 1; $i--) {
    echo "$i ";
}
echo "\n";

// Stap van 2
for ($i = 0; $i <= 20; $i += 2) {
    echo "$i ";
}
echo "\n";

// Tafel van 7
for ($i = 1; $i <= 10; $i++) {
    echo "7 x $i = " . (7 * $i) . "\n";
}

โš ๏ธ Let op verschil met JS

De for-loop-syntax is identiek aan JavaScript: for (init; conditie; stap). Enig verschil: variabelen gebruiken $.

while-loop

De while-loop gebruik je als je niet van tevoren weet hoeveel iteraties nodig zijn.

<?php
// Basis while
$i = 1;
while ($i <= 5) {
    echo "Stap $i\n";
    $i++;  // Vergeet dit niet! Anders infinite loop.
}

// Praktisch voorbeeld: halveren tot onder 1
$getal = 100;
$stappen = 0;
while ($getal >= 1) {
    $getal /= 2;
    $stappen++;
}
echo "Na $stappen stappen: " . round($getal, 4) . "\n";

โš ๏ธ Infinite loop โ€” gevaar

<?php
// FOUT: vergeten te incrementen โ†’ hangt voor altijd
$i = 0;
while ($i < 10) {
    echo $i;
    // $i++ ontbreekt!  โ† PHP-WASM crasht, server hangt
}

โš ๏ธ Let op verschil met JS

While is identiek aan JavaScript. In JS kun je ook while(true) schrijven met een break erin โ€” dat werkt in PHP precies hetzelfde.

do-while

De do-while-loop voert de body altijd minimaal รฉรฉn keer uit, daarna wordt de conditie gecheckt.

<?php
// do-while: minimaal รฉรฉn keer uitgevoerd
$poging = 1;
do {
    echo "Poging $poging\n";
    $poging++;
} while ($poging <= 3);

// Ook als conditie direct false is, loopt het รฉรฉn keer
$x = 100;
do {
    echo "Dit wordt altijd geprint: x = $x\n";
} while ($x < 10);  // false, maar de body is al uitgevoerd

Wanneer gebruik je do-while?

  • โ†’ Wanneer de actie altijd minimaal รฉรฉn keer moet plaatsvinden
  • โ†’ Typisch: wachten op geldige invoer van een gebruiker
  • โ†’ In de praktijk minder gebruikt dan while en for

foreach โ€” de PHP-standaard voor arrays

foreach is de meest gebruikte loop in PHP. Perfect voor arrays en collecties.

<?php
// Indexed array โ€” alleen waarden
$kleuren = ["rood", "groen", "blauw"];
foreach ($kleuren as $kleur) {
    echo $kleur . "\n";
}

// Met index
foreach ($kleuren as $index => $kleur) {
    echo "$index: $kleur\n";
}

// Associatieve array โ€” sleutels en waarden
$gebruiker = ["naam" => "Jan", "leeftijd" => 20, "stad" => "Amsterdam"];
foreach ($gebruiker as $sleutel => $waarde) {
    echo "$sleutel: $waarde\n";
}

// Array van arrays (zoals database-resultaten)
$studenten = [
    ["naam" => "Ali", "cijfer" => 7.5],
    ["naam" => "Bo",  "cijfer" => 8.2],
    ["naam" => "Cas", "cijfer" => 6.1],
];
foreach ($studenten as $student) {
    echo "{$student['naam']}: {$student['cijfer']}\n";
}

โš ๏ธ Let op verschil met JS

In JS gebruik je for...of voor waarden en for...in voor sleutels (van objecten). In PHP gebruik je foreach voor beide โ€” met de optionele $sleutel => $waarde syntax.

๐Ÿ”— Komt terug in Symfony

In Twig templates gebruik je {% for product in producten %} โ€” dat is de Twig-versie van PHP's foreach. Symfony-controllers geven arrays of collecties terug die je in Twig itereert.

break en continue

<?php
// break โ€” stopt de loop direct
for ($i = 0; $i < 10; $i++) {
    if ($i === 5) {
        echo "Stop bij 5\n";
        break;
    }
    echo "$i ";
}

// continue โ€” sla huidige iteratie over
for ($i = 0; $i < 10; $i++) {
    if ($i % 2 === 0) continue;  // Sla even nummers over
    echo "$i ";  // Print alleen oneven
}
echo "\n";

// break 2 โ€” verlaat twee loop-niveaus
for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($j === 1) break 2;  // Verlaat BEIDE loops
        echo "($i,$j) ";
    }
}
echo "\n";

// Praktisch: zoek eerste element dat voldoet
$producten = [12, 45, 7, 89, 23];
$gevonden = null;
foreach ($producten as $product) {
    if ($product > 50) {
        $gevonden = $product;
        break;
    }
}
echo "Eerste > 50: $gevonden\n";

โš ๏ธ Let op verschil met JS

break en continue werken hetzelfde als in JS. Verschil: PHP's break 2 kan geneste loops verlaten; in JS gebruik je gelabelde breaks (outer: for(...)).

Sandbox

Loop door de studentenlijst en bereken het gemiddelde cijfer.

// output

Klik op Uitvoeren...

Kennischeck

Les 4 afronden

Ga door naar arrays โ†’