dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Arrays und Arrayvariablen

Wie kann ich ein Array aufzählen?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

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
\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
\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
\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
\n", $v);
}
Wie kann ich ein Array aufzählen?
http://www.php-faq.de/q-arrays-aufzaehlen.html
 

Login