count

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

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

說明

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

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

參數(shù)

value

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

mode

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

警告

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

返回值

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

更新日志

版本 說明
8.0.0 value 參數(shù)傳入了無效的 countable 類型, count() 現(xiàn)在會拋出 TypeError
7.2.0 value 參數(shù)傳入了無效的 countable 類型, count() 現(xiàn)在會產(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));
?>

以上例程會輸出:

int(3)
int(3)

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

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

var_dump(count(null));

var_dump(count(false));
?>

以上例程會輸出:

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'));

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

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

?>

以上例程會輸出:

int(8)
int(2)

示例 #4 Countable 對象

<?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));
?>

以上例程會輸出:

int(2)

參見