說明
用於陣列時,統計陣列中元素的數量;用於實現了 Countable 介面的對象時,返回 Countable::count() 方法的返回值。
參數
-
value
-
陣列或者 Countable 對象。
-
mode
-
如果可選的
mode
參數設為COUNT_RECURSIVE
(或 1),count() 將遞迴地對陣列計數。對計算多維陣列的所有單元尤其有用。警告count() 能檢測遞迴來避免無限循環,但每次出現時會產生
E_WARNING
錯誤 (如果 array 不止一次包含了自身)並返回大於預期的統計數字。
返回值
返回 value
中的元素的數量。在 PHP 8.0.0
之前,如果參數既不是陣列也不是實現了 Countable
介面的對象,將返回
1
。當 value
為 null
時返回
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($food, COUNT_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)
參見
- is_array() - 檢測變數是否是陣列
- isset() - 檢測變數是否已聲明並且其值不為 null
- empty() - 檢查一個變數是否為空
- strlen() - 獲取字串長度
- is_countable() - Verify that the contents of a variable is a countable value
- Array 陣列