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 โ