陣列操作是 PHP 開發的高頻需求。本文系統整理 count()、sizeof() 取得陣列長度,以及 array_count_values() 統計各值出現次數的用法、差異與效能特性。
<?php $arr = ['蘋果', '香蕉', '橘子', '葡萄', '鳳梨']; // count():標準函式,支援 COUNT_RECURSIVE 遞迴計算多維陣列 echo count($arr); // 5 echo count($arr, COUNT_RECURSIVE); // 多維陣列時遞迴計算 // sizeof():count() 的別名,功能完全相同 echo sizeof($arr); // 5 // 空陣列或未定義變數回傳 0 $empty = []; echo count($empty); // 0 echo count($undefinedVar); // 0 (會觸發 Notice) ?>
<?php
$array = [4, 5, 1, 2, 3, 1, 2, 1];
// 回傳關聯陣列:鍵=原始值,值=出現次數
$ac = array_count_values($array);
/*
結果:
Array
(
[4] => 1
[5] => 1
[1] => 3
[2] => 2
[3] => 1
)
*/
// 實用範例:找出眾數(出現最多次的值)
arsort($ac);
$mode = key($ac); // 1
echo "眾數:$mode (出現 {$ac[$mode]} 次)";
?>
| 函式 | 用途 | 回傳型別 | 效能備註 |
|---|---|---|---|
count() | 元素總數 | int | O(1) 陣列內部計數器,極快 |
sizeof() | 元素總數 | int | count() 別名,無差異 |
array_count_values() | 各值頻率統計 | array | O(n) 需遍歷整個陣列 |
array_filter(array_count_values($arr), fn($v) => $v > 1)array_count_values($votes) 快速得票分布array_count_values(str_split($str)) 統計字元頻率count($multiArr, COUNT_RECURSIVE) 含巢狀層級總數count($undef) 回傳 0 但觸發 Notice,建議先 isset() 或 is_array() 檢查count('string') 回傳 1(視為單一元素),PHP 7.2+ 會 Deprecation 警告array_count_values() 鍵值大小寫敏感,'A' 與 'a' 分開計算熟練掌握這些陣列統計函式,能大幅簡化資料分析、報表產生等常見業務邏輯的實作複雜度。