<?php
//PHP count function
$arr=array("hasan"=>array("Name"=>"Hasan Al Mamun","Address"=>"Uttara, Dhaka","Profession"=>"Web Developer"),
"meathanjay"=>array("Name"=>"Meathanjay","Address"=>"Nawabgonj, Dhaka","Profession"=>"Nothing")
);
echo count($arr);
//Output 2
$arr=array("hasan"=>array("Name"=>"Hasan Al Mamun","Address"=>"Uttara, Dhaka","Profession"=>"Web Developer"),
"meathanjay"=>array("Name"=>"Meathanjay","Address"=>"Nawabgonj, Dhaka","Profession"=>"Nothing")
);
echo count($arr,1);
//Output 8 when second Parameter true
count
(PHP 4, PHP 5)
count — 计算数组中的单元数目或对象中的属性个数
说明
统计一个数组里的所有元素,或者一个对象里的东西。
对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 Countable::count(),此方法返回 count() 函数的返回值。
关于 PHP 中如何实现和使用数组可以参考手册中数组章节中的详细描述。
参数
-
var -
数组或者对象。
-
mode -
如果可选的
mode参数设为COUNT_RECURSIVE(或 1), count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode的默认值是 0。 count() 识别不了无限递归。
返回值
返回 var 中的单元数目。
如果 var 不是数组类型或者实现了
Countable 接口的对象,将返回
1,有一个例外,如果
var 是 NULL 则结果是 0。
Caution
count() 对没有初始化的变量返回 0,但对于空的数组也会返回 0。用 isset() 来测试变量是否已经初始化。
更新日志
| 版本 | 说明 |
|---|---|
| 4.2.0 |
添加了可选的 mode 参数。
|
范例
Example #1 count() 例子
<?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 递归 count() 例子
<?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
?>
meathanjay at gmail dot com ¶
1 day ago
danny at dannymendel dot com ¶
5 years ago
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;
}
?>
alexandr at vladykin dot pp dot ru ¶
6 years ago
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;
}
?>
atoi_monte at hotmail dot com ¶
5 years ago
Please note: While SPL is compiled into PHP by default starting with PHP 5, the Countable interface is not available until 5.1
jezdec at email dot cz ¶
4 years ago
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!";
?>
freefaler at gmail dot com ¶
8 years ago
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
?>
nicolas dot grekas+php at gmail dot com ¶
1 year ago
As of PHP 5.2.6, count() DOES detect infinite recursion.
It triggers a warning when its argument is a recursive array.
vivekanand dot pathak25 at gmail dot com ¶
4 days ago
<php
function CountArray($arr){
$i=0;
foreach($arr as $val){
$i++;
}
return $i;
}
$arr=array(1,2,3,4,5,6,7,8,9);
echo CountArray($arr); // output 9
?>
