統計陣列、Countable 對像中所有元素的數量

count

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

count統計陣列、Countable 對像中所有元素的數量

說明

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

用於陣列時,統計陣列中元素的數量;用於實現了 Countable 介面的對象時,返回 Countable::count() 方法的返回值。

參數

value

陣列或者 Countable 對象。

mode

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

警告

count() 能檢測遞迴來避免無限循環,但每次出現時會產生 E_WARNING 錯誤 (如果 array 不止一次包含了自身)並返回大於預期的統計數字。

返回值

返回 value 中的元素的數量。在 PHP 8.0.0 之前,如果參數既不是陣列也不是實現了 Countable 介面的對象,將返回 1。當 valuenull 時返回 0

更新日誌

版本 說明
8.0.0 value 參數傳入了無效的 countable 型別, count() 現在會拋出 TypeError
7.2.0 value 參數傳入了無效的 countable 型別, count() 現在會產生警告。

範例

示例 #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'));

// 遞迴計數
var_dump(count($foodCOUNT_RECURSIVE));

// 常規計數
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)

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *