PHP Handbuch
Zurück | Kapitel 11. Kontroll-Strukturen | Nach vorne

# `foreach`

PHP 4 (nicht PHP 3) enthält ein `foreach` Konstrukt, genau wie Perl und einige andere Sprachen. Diese ermöglicht es, auf einfache Weise ein Array zu durchlaufen. `foreach` funktioniert nur in Verbindung mit Arrays. Wenn Sie versuchen `foreach` mit Variablen eines anderen Datentyps oder nicht initialisierten Variablen zu benutzen, gibt PHP einen Fehler aus. Es gibt zwei Syntaxformen; die zweite ist eine unbedeutende, aber sinnvolle Erweiterung der ersten Syntax:

    foreach (array_expression as $value) Anweisung
    foreach (array_expression as $key => $value) Anweisung

Die erste Form durchläuft das `array_expression`-Array. Bei jedem Durchgang wird der Wert des aktuellen Elements `$value` zugewiesen und der interne Array-Zeiger um eins erhöht. Dadurch wird beim nächsten Durchgang automatisch das nächste Element ausgewertet.

Die zweite Form arbeitet genauso, außer dass bei jedem Durchlauf auch der aktuelle Schlüssel der Variablen `$key` zugewiesen wird.

> Anmerkung: Sobald `foreach` zum ersten Mal ausgeführt wird, wird der interne Arrayzeiger automatisch auf das erste Element des Arrays gesetzt. Das bedeutet, dass Sie vor einem Durchlauf von `foreach` reset() nicht aufrufen müssen.

> Anmerkung: Beachten Sie auch, dass `foreach` mit einer Kopie des angegebenen Arrays arbeitet, nicht mit dem Array selbst. Deshalb wird auch der Arrayzeiger nicht wie bei dem each()-Konstrukt verändert und Veränderungen an ausgegebenen Arrayelementen haben keine Auswirkung auf das originale Array. Trotzdem wird der interne Arrayzeiger des originalen Arrays bei der Verarbeitung bewegt. Angenommen, die foreach-Schleife ist komplett abgearbeitet, wird der interne Arrayzeiger (des originalen Arrays) auf das letzte Element zeigen.

> Anmerkung: Bei `foreach` ist es nicht möglich Fehlermeldungen durch den Gebrauch von '@' zu unterdrücken ist

Beachten Sie, dass die folgenden Beispiele in ihrer Funktionalität identisch sind:

`<?php $arr = array("eins", "zwei", "drei"); reset ($arr); while (list(, $value) = each ($arr)) { echo "Wert: $value<br />\n"; } foreach ($arr as $value) { echo "Wert: $value<br />\n"; ?> }`

Auch hier funktioniert alles gleich:

`<?php $arr = array("eins", "zwei", "drei"); reset ($arr); while (list($key, $value) = each ($arr)) { echo "Schlüssel: $key; Wert: $value<br />\n"; } foreach ($arr as $key => $value) { echo "Schlüssel: $key; Wert: $value<br />\n"; } ?>`

Noch einige Beispiele, die die Anwendung verdeutlichen:

`<?php /* foreach Beispiel 1: Nur der Wert */ $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Aktueller Wert von \$a: $v.\n"; } /* foreach Beispiel 2: Wert (mit Ausgabe des Arrayschlüssels zur Veranschaulichung) */ $a = array(1, 2, 3, 17); $i = 0; /* nur zu Veranschaulichung */ foreach($a as $v) { echo "\$a[$i] => $v.\n"; $i++; } /* foreach Beispiel 3: Schlüssel und Wert */ $a = array( "eins" => 1, "zwei" => 2, "drei" => 3, "siebzehn" => 17 ); foreach($a as $k => $v) { echo "\$a[$k] => $v.\n"; } /* foreach Beispiel 4: multidimensionale Arrays */ $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } } /* foreach Beispiel 5: dynamische Arrays */ foreach (array(1, 2, 3, 4, 5) as $v) { echo "$v\n"; } ?>`

Zurück | Zum Anfang | Nach vorne
`for` | Nach oben | `break`