count

(PHP 4, PHP 5, PHP 7, PHP 8)

count統(tǒng)計(jì)數(shù)組、Countable 對(duì)象中所有元素的數(shù)量

說明

count(Countable|array $value, int $mode = COUNT_NORMAL): int

用于數(shù)組時(shí),統(tǒng)計(jì)數(shù)組中元素的數(shù)量;用于實(shí)現(xiàn)了 Countable 接口的對(duì)象時(shí),返回 Countable::count() 方法的返回值。

參數(shù)

value

數(shù)組或者 Countable 對(duì)象。

mode

如果可選的 mode 參數(shù)設(shè)為 COUNT_RECURSIVE(或 1),count() 將遞歸地對(duì)數(shù)組計(jì)數(shù)。對(duì)計(jì)算多維數(shù)組的所有單元尤其有用。

警告

count() 能檢測(cè)遞歸來避免無限循環(huán),但每次出現(xiàn)時(shí)會(huì)產(chǎn)生 E_WARNING 錯(cuò)誤 (如果 array 不止一次包含了自身)并返回大于預(yù)期的統(tǒng)計(jì)數(shù)字。

返回值

返回 value 中的元素的數(shù)量。在 PHP 8.0.0 之前,如果參數(shù)既不是數(shù)組也不是實(shí)現(xiàn)了 Countable 接口的對(duì)象,將返回 1。當(dāng) valuenull 時(shí)返回 0。

更新日志

版本 說明
8.0.0 當(dāng) value 參數(shù)傳入了無效的 countable 類型, count() 現(xiàn)在會(huì)拋出 TypeError
7.2.0 當(dāng) value 參數(shù)傳入了無效的 countable 類型, count() 現(xiàn)在會(huì)產(chǎn)生警告。

范例

示例 #1 count() 例子

<?php
$a
[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a));

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
var_dump(count($b));
?>

以上例程會(huì)輸出:

int(3)
int(3)

示例 #2 count() 非 Countable|array 的例子 (這是個(gè)反例,請(qǐng)勿模仿)

<?php
$b
[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
var_dump(count($b));

var_dump(count(null));

var_dump(count(false));
?>

以上例程會(huì)輸出:

int(3)
int(0)
int(1)

Output of the above example in PHP 7.2:

int(3)

Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12
int(0)

Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14
int(1)

以上例程在 PHP 8 中的輸出:

int(3)

Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12

示例 #3 遞歸 count() 例子

<?php
$food 
= array('fruits' => array('orange''banana''apple'),
              
'veggie' => array('carrot''collard''pea'));

// 遞歸計(jì)數(shù)
var_dump(count($foodCOUNT_RECURSIVE));

// 常規(guī)計(jì)數(shù)
var_dump(count($food));

?>

以上例程會(huì)輸出:

int(8)
int(2)

示例 #4 Countable 對(duì)象

<?php
class CountOfMethods implements Countable
{
    private function 
someMethod()
    {
    }

    public function 
count(): int
    
{
        return 
count(get_class_methods($this));
    }
}

$obj = new CountOfMethods();
var_dump(count($obj));
?>

以上例程會(huì)輸出:

int(2)

參見