Start · Sprachen · PHP · Referenz · foreach

foreach

Anweisung

Die häufigste Schleife in PHP — iteriert über Arrays, Traversable-Objekte, Generatoren und alle iterable-Typen.

seit PHP 4.0.0 Kategorie: control-flow

Signatur

foreach (iterable $iterable as $value) { … } foreach (iterable $iterable as $key => $value) { … }

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";
}
PHP Python Go

Mit Key (assoziatives Array)

<?php

$preise = ['brot' => 3.50, 'milch' => 1.20];

foreach ($preise as $produkt => $preis) {
    echo "{$produkt}: {$preis}\n";
}
brot: 3.5 milch: 1.2

Destructuring im foreach

<?php

$users = [
    ['name' => 'Anna', 'alter' => 28],
    ['name' => 'Ben',  'alter' => 35],
];

foreach ($users as ['name' => $name, 'alter' => $alter]) {
    echo "{$name} ({$alter})\n";
}
Anna (28) Ben (35)

Mit Reference — Original ändern

<?php

$preise = [100, 200, 300];

foreach ($preise as &$preis) {
    $preis *= 1.19; // MwSt aufschlagen
}
unset($preis); // WICHTIG!

print_r($preise);
[119, 238, 357]

// Wichtig · Fallstricke

  • break verlässt die Schleife, continue springt zur nächsten Iteration.
  • Ein break 2 bricht auch aus einer umschließenden zweiten Schleife aus.
  • Bei Generatoren wird der Wert on-demand produziert — perfekt bei Millionen von Datensätzen.

Siehe auch