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

# `foreach`

PHP 4 (nicht PHP 3) enthält eine `foreach`-Funktion, genau wie Perl und andere Sprachen. Diese ermöglicht es, auf einfache Weise ein Array zu durchlaufen. Es gibt zwei Syntax-Formen; 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 1 erhöht. Dadurch wird beim nächsten Durchgang automatisch das nächste Element ausgewertet.

Die zweite Form arbeitet genauso, ausser 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 Array-Pointer automatisch auf das erste Element des Arrays zurück gesetzt. Das heisst, dass Sie nicht reset() vor einem Durchlauf von `foreach` aufrufen müssen.

> Anmerkung: Beachten Sie auch, dass `foreach` mit einer Kopie des angegebenen Arrays arbeitet. Deshalb wird auch der Array-Pointer nicht wie bei dem each-Konstrukt verändert.

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

    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:

    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:

    /* foreach Beispiel 1: Nur der Wert */

    $a = array (1, 2, 3, 17);

    foreach ($a as $v) {
        print "Aktueller Wert von \$a: $v.\n";
    }

    /* foreach Beispiel 2: Wert (mit Ausgabe des Array-Schlüssels) */

    $a = array (1, 2, 3, 17);

    $i = 0; /* nur für Anschauungs-Zweck */

    foreach($a as $v) {
        print "\$a[$i] => $k.\n";
    }

    /* foreach Beispiel 3: Schlüssel und Wert */

    $a = array (
        "one" => 1,
        "two" => 2,
        "three" => 3,
        "seventeen" => 17
    );

    foreach($a as $k => $v) {
        print "\$a[$k] => $v.\n";
    }

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