1. Mit count()
Die mit Abstand einfachste Methode zum Zählen aller Elemente in einem Array ist die Funktion count($array). Diese sollte in den allermeisten Fällen eingesetzt werden.
<?php $arr = array(6, 7, 8, 9, 10); var_dump( count($arr) ); ?>
int(5)
2. Mit foreach-Schleife
Die Anzahl kann auch selbst gebildet werden, hier etwa durch Anwendung einer foreach-Schleife. Diese Konstruktion sollte aber aufgrund der schlechteren Performance nur dann verwendet werden, wenn die zusätzliche Flexibilität benötigt wird. (Etwa, weil nur bestimmte Elemente gezählt werden sollen.)
<?php $arr = array(6, 7, 8, 9, 10); $count = 0; foreach ($arr as $val) { $count++; } var_dump($count); ?>
int(5)
3. Mit array_walk()
Vergleichbar zur foreach-Schleife ist array_walk($array, $callback), welches $callback auf alle Elemente im Array anwendet. Auch hier gilt, dass dies ineffizienter ist als count() und daher nur in Ausnahmefällen Verwendung finden sollte. Im nachfolgenden Beispiel etwa sollen nur die Elemente gezählt werden, deren Wert unterhalb von 10 liegt:
<?php $arr = array(6, 7, 8, 9, 10); // Zaehlen mit Bedingungen, was genau gezaehlt werden soll $count = 0; array_walk($arr, function($val) use (&$count) { if (is_int($val) && $val<10) { $count++; } }); var_dump($count); ?>
int(4)
4. end() und key()
Sofern bekannt ist, dass das Array von 0 bis n durchnummeriert ist (0, 1, 2, 3, ...), kann auf die Kombination aus end($array) und key($array) zurückgegriffen werden. Mit end($array) wird der Array-Zeiger auf das letzte Element im Array gesetzt. Mit key($array) wird wiederum der Schlüssel desjenigen Elements zurückgegeben, auf den der Array-Zeiger gerade gerichtet ist. Die Anzahl aller Elements entspricht dann dem (letzten) Schlüssel plus eins.
<?php $arr = array(6, 7, 8, 9, 10); end($arr); $count = key($arr) + 1; var_dump($count); ?>
int(5)
Damit die vorgestellte Methode auch bei leeren Arrays funktioniert, sollte noch mit empty() geprüft werden, ob das Array leer ist. Andernfalls würde auch bei leeren Arrays $count den Wert 1 haben.
<?php $arr = array(); end($arr); // Falls Array leer: 0, Sonst: letzter Schluessel plus eins $count = (empty($arr) ? 0 : key($arr) + 1); var_dump($count); ?>
int(5)
5. Alle Elemente in mehrdimensionalem Array zählen
Für die Zählung aller Elemente in einem mehrdimensionalen Array sollte array_walk_recursive($array, $callback) angewendet werden. Diese Funktion arbeitet analog zu array_walk($array, $callback), iteriert also über alle Elemente in $array und ruft bei jeder Iteration die Callback-Funktion $callback mit dem aktuellen Wert und Schlüssel auf. Im Gegensatz zu array_walk() durchläuft sie aber auch alle Unterarrays (und deren Unterarrays usw.).
<?php $arr = array(1, 2, array(3, 4, array(5, 6)), 7, array(8, 9), 10); $count = 0; array_walk_recursive($arr, function($val) use (&$count) { $count++; }); var_dump($count); ?>
int(10)