PHP Handbuch
Zurück | Kapitel 12. 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 einer Variable eines anderen Datentyps oder einer nicht initialisierten Variable zu benutzen, gibt PHP einen Fehler aus. 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 eins 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 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 Array-Pointer nicht wie bei dem each()-Konstrukt verändert. Veränderungen eines ausgegebenen Arrayelements haben keine Auswirkungen auf das originale Array.

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

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 zur Veranschaulichung) */

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

    $i = 0; /* nur zu Veranschaulichung */

    foreach($a as $v) {
        print "\$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) {
        print "\$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) {
            print "$v2\n";
        }
    }

    /* foreach Beispiel 5: dynamische Arrays */

    foreach(array(1, 2, 3, 4, 5) as $v) {
        print "$v\n";
    }

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