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 — Count all elements in an array, or something in an object
Description
Counts all elements in an array, or something in an object.
For objects, if you have SPL installed, you can hook into count() by implementing interface Countable. The interface has exactly one method, Countable::count(), which returns the return value for the count() function.
Please see the Array section of the manual for a detailed explanation of how arrays are implemented and used in PHP.
Parameters
-
var -
The array or the object.
-
mode -
If the optional
modeparameter is set toCOUNT_RECURSIVE(or 1), count() will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array.Cautioncount() can detect recursion to avoid an infinite loop, but will emit an
E_WARNINGevery time it does (in case the array contains itself more than once) and return a count higher than may be expected.
Return Values
Returns the number of elements in var.
If var is not an array or an object with
implemented Countable interface,
1 will be returned.
There is one exception, if var is NULL,
0 will be returned.
count() may return 0 for a variable that isn't set, but it may also return 0 for a variable that has been initialized with an empty array. Use isset() to test if a variable is set.
Changelog
| Version | Description |
|---|---|
| 4.2.0 |
The optional mode parameter was added.
|
Examples
Example #1 count() example
<?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
?>
Example #2 Recursive count() example
<?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
?>
See Also
- is_array() - Finds whether a variable is an array
- isset() - Determine if a variable is set and is not NULL
- strlen() - Get string length
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
?>
