Signatur
Beschreibung
foreach ist das Standard-Werkzeug für Iteration in PHP. Anders als for brauchst du keinen Zähler zu verwalten und keine Off-by-One-Bugs zu befürchten.
Es funktioniert mit jedem Wert, der iterable ist: Arrays, Instanzen von Traversable (z. B. IteratorAggregate, Iterator) und Generator-Funktionen mit yield.
Das Value kann per Reference (&$value) erfasst werden, um das originale Array zu verändern — aber Vorsicht: die Referenz bleibt nach der Schleife bestehen und führt gerne zu subtilen Bugs. Immer nach der Schleife mit unset($value) aufräumen.
Beispiele
Grundform
<?php
$sprachen = ['PHP', 'Python', 'Go'];
foreach ($sprachen as $sprache) {
echo $sprache . "\n";
}
Mit Key (assoziatives Array)
<?php
$preise = ['brot' => 3.50, 'milch' => 1.20];
foreach ($preise as $produkt => $preis) {
echo "{$produkt}: {$preis}\n";
}
Destructuring im foreach
<?php
$users = [
['name' => 'Anna', 'alter' => 28],
['name' => 'Ben', 'alter' => 35],
];
foreach ($users as ['name' => $name, 'alter' => $alter]) {
echo "{$name} ({$alter})\n";
}
Mit Reference — Original ändern
<?php
$preise = [100, 200, 300];
foreach ($preise as &$preis) {
$preis *= 1.19; // MwSt aufschlagen
}
unset($preis); // WICHTIG!
print_r($preise);
// Wichtig · Fallstricke
breakverlässt die Schleife,continuespringt zur nächsten Iteration.- Ein
break 2bricht auch aus einer umschließenden zweiten Schleife aus. - Bei Generatoren wird der Wert on-demand produziert — perfekt bei Millionen von Datensätzen.