| PHP Handbuch | ||
|---|---|---|
| Zurück | Kapitel 12. Kontroll-Strukturen | Nach vorne |
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:
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";
} |
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] => $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";
} |