de.comp.lang.php.* FAQ

9.2. Wie kann ich ein Array aufzählen?

Antwort von Kristian Köhntopp

Ein 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);
}

Valid HTML 4.01! Valid CSS!

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