Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

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";
}