首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 陣列長度統計與值出現次數計算方法詳解

     編輯:PHP 綜合知識

PHP 提供多種陣列統計函式,本文詳細解析 count()、sizeof()、array_count_values() 的用法差異、效能特性與適用場景,避免常見誤區。

1. count() - 統計陣列元素個數

$arr = array('0', '1', '2', '3', '4');
echo count($arr); // 輸出 5

// 多維陣列遞迴統計
$multi = array(1, 2, array(3, 4, array(5, 6)));
echo count($multi, COUNT_RECURSIVE); // 輸出 8 (含子陣列本身)

2. sizeof() - count() 別名

sizeof() 完全等同於 count(),僅為別名函式,效能相同。建議統一使用 count() 提升程式碼可讀性。

3. array_count_values() - 統計值出現次數

$array = array(4, 5, 1, 2, 3, 1, 2, 1);
$ac = array_count_values($array);

print_r($ac);
/* 輸出:
Array (
    [4] => 1
    [5] => 1
    [1] => 3
    [2] => 2
    [3] => 1
) */

效能比較與注意事項

函式用途時間複雜度注意事項
count()元素總數O(1)PHP 陣列內部維護計數器,極快
array_count_values()值頻率統計O(n)僅適用一維陣列,值必須為 scalar (int/string)

常見錯誤與解決方案

  • 錯誤:對多維陣列直接使用 array_count_values()
    // 錯誤:會觸發 Warning
    $multi = [[1,2], [2,3]];
    array_count_values($multi);
  • 解決:先扁平化陣列
    function flattenArray($arr) {
        $result = [];
        array_walk_recursive($arr, function($v) use (&$result) {
            $result[] = $v;
        });
        return $result;
    }
    
    $flat = flattenArray($multi);
    $stats = array_count_values($flat);
  • 空陣列/未定義變數:count() 回傳 0,不會報錯(PHP 7.2+ 對非陣列發出 Warning)

進階應用:統計多維陣列特定鍵值出現次數

$users = [
    ['name'=>'Alice', 'city'=>'Taipei'],
    ['name'=>'Bob', 'city'=>'Taichung'],
    ['name'=>'Cathy', 'city'=>'Taipei'],
];

$cities = array_column($users, 'city');
$cityStats = array_count_values($cities);
// ['Taipei'=>2, 'Taichung'=>1]
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved