My function returns the number of elements in array for multidimensional arrays subject to depth of array. (Almost COUNT_RECURSIVE, but you can point on which depth you want to plunge).
<?php
function getArrCount ($arr, $depth=1) {
if (!is_array($arr) || !$depth) return 0;
$res=count($arr);
foreach ($arr as $in_ar)
$res+=getArrCount($in_ar, $depth-1);
return $res;
}
?>
count
(PHP 4, PHP 5)
count — Zählt alle Elemente eines Arrays oder Attribute eines Objekts
Beschreibung
Zählt alle Elemente eines Arrays oder Attribute eines Objekts.
Wenn Sie die SPL installiert haben, können Sie in Objekten eine count()-Funktion nutzen, indem Sie das Interface Countable implementieren. Das Interface hat exakt eine Methode, nämlich count(), die den Rückgabewert der Funktion count() zurückliefert.
In der Sektion Arrays finden Sie eine detaillierte Erklärung, wie Arrays in PHP implementiert sind und wie sie benutzt werden.
Parameter-Liste
-
var -
Das Array.
-
mode -
Wenn der optionale Parameter
modeaufCOUNT_RECURSIVE(oder 1) gesetzt ist, wird count() rekursiv durch das Array zählen. Dies kann besonders nützlich sein, um alle Elemente eines mehrdimensionalen Arrays zu zählen. Der Standardwert fürmodeist 0. count() erkennt keine endlose Rekursion.
Rückgabewerte
Liefert die Anzahl von Elementen in var, welches
typischerweise ein Array ist, da alles andere ein Element
enthält.
Ist var kein Array oder Objekt mit Interface
Countable, wird 1 zurückgegeben.
Es besteht eine Ausnahme, wenn var NULL ist,
in diesem Fall wird 0 zurückgegeben.
count() gibt 0 zurück, wenn die Variable nicht gesetzt ist, aber sie gibt ebenfalls 0 zurück, wenn die Variable als leeres Array initialisiert wurde. Verwenden Sie isset() um zu testen, ob eine Variable gesetzt ist.
Changelog
| Version | Beschreibung |
|---|---|
| 4.2.0 |
Der optionale Parameter mode wurde hinzugefügt.
|
Beispiele
Beispiel #1 count()-Beispiel
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
//$result == 3
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
$result = count($b);
// $result == 3
$result = count(null);
// $result == 0
$result = count(false);
// $result == 1
?>
Beispiel #2 Rekursives count()-Beispiel
<?php
$food = array('Obst' => array('Orange', 'Banane', 'Apfel'),
'Gemüse' => array('Karotte', 'Kohl', 'Erbse'));
// rekursiv zählen
echo count($food, COUNT_RECURSIVE); // gibt 8 aus
// normales zählen
echo count($food); // gibt 2 aus
?>
Siehe auch
- is_array() - Prüft, ob die Variable ein Array ist
- isset() - Prüft, ob eine Variable existiert und ob sie nicht NULL ist
- strlen() - Ermitteln der String-Länge
I actually find the following function more useful when it comes to multidimension arrays when you do not want all levels of the array tree.
// $limit is set to the number of recursions
<?php
function count_recursive ($array, $limit) {
$count = 0;
foreach ($array as $id => $_array) {
if (is_array ($_array) && $limit > 0) {
$count += count_recursive ($_array, $limit - 1);
} else {
$count += 1;
}
}
return $count;
}
?>
Please note: While SPL is compiled into PHP by default starting with PHP 5, the Countable interface is not available until 5.1
Hi there,
there is a simple script with example for counting rows and columns of a two-dimensional array.
<?php
$data = array(
"apples" =>
array("red", "yellow", "pineapples"),
"bananas" =>
array("small", "medium", "big"),
"vegs" =>
array("potatoes", "carrots", "onions")
);
$rows = count($data,0);
$cols = (count($data,1)/count($data,0))-1;
print "There are {$rows} rows and {$cols} columns in the table!";
?>
As of PHP 5.2.6, count() DOES detect infinite recursion.
It triggers a warning when its argument is a recursive array.
If you want to count only elements in the second level of 2D arrays.A close to mind note, useful for multidimentional arrays:
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard','pea'));
// recursive count
echo count($food,COUNT_RECURSIVE); // output 8
// normal count
echo count($food); // output 2
// all the fruits and veggies
echo (count($food,COUNT_RECURSIVE)-count($food,0)); //output 6
?>
