9.2. Wie kann ich ein Array aufzählen?Antwort von Kristian KöhntoppEin Array enthält $anz = count($avar) viele Elemente. Man kann diese Elemente mit einer for-Schleife aufzählen, falls die Indizes numerisch-zusammenhängend sind:
$avar = array('rot', 'gelb', 'blau', 'schwarz');
$anz = count($avar);
for ($i=0; $i<$anz; $i++) {
printf("i: %d avar[%d] = %s<br>\n", $i, $i, $avar[$i]);
}
Für assoziative Arrays ist dieses Konstrukt besser geeignet:
if (isset($avar) && is_array($avar)) {
foreach ($avar as $k => $v) {
printf("k=%s v=%s<br>\n", $k, $v);
}
}
In PHP3 hat man oft die folgende Syntax verwendet, die inzwischen veraltet (aber noch funktionsfähig) ist:
if (isset($avar) && is_array($avar)) {
reset($avar);
while (list($k, $v) = each($avar)) {
printf("k=%s v=%s<br>\n", $k, $v);
}
}
Es macht Gebrauch von den Funktionen reset() um den internen Positionszeiger eines Arrays zurückzusetzen, list() um einen Zuweisungskontext für ein Wertepaar $k und $v zu erzeugen und each() um den Schlüssel (key, k) und den Wert (value, v) an der aktuellen Position des Arrays auszulesen. Von der Anwendung der veralteten und defekten Funktionen next() , prev() und current() ist in diesem Zusammenhang abzuraten, da sie bei Arrays mit Nullwerten falsche Ergebnisse liefern. Diese Schleife wird nur die Werte -2 und -1 ausgeben, da hier der Wert 0 nicht vom Feldende unterschieden werden kann:
$avar = array(-2, -1, 0, 1, 2);
for (reset($avar); $v = current($avar); next($avar)) {
printf("v = %d<br>\n", $v);
}
|
||
| 9.2. Wie kann ich ein Array aufzählen? http://www.php-faq.de/q/q-arrays-aufzaehlen.html |
||
| Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team | ||