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

PHP 統計數值陣列出現頻率最高的 Top 10 數字

     編輯:PHP 綜合知識

資料分析、報表、日誌統計常需「出現頻率最高的前 N 項」。本文展示 PHP 內建函式組合:array_count_values() + arsort() + array_slice(),三行代碼完成 Top-N 統計。

核心程式碼

// 1. 產生測試資料:1000 個 1-1000 隨機數
$data = [];
for ($i = 0; $i < 1000; $i++) $data[] = rand(1, 1000);

// 2. 統計頻率 → 倒序排序 → 取前 10
$freq = array_count_values($data);  // [數字 => 次數]
arsort($freq);                       // 依次數大到小排序,保持鍵值關聯
$top10 = array_slice($freq, 0, 10, true); // true 保留鍵

// 3. 輸出
foreach ($top10 as $num => $count) {
    echo "數字:$num 共出現 $count 次
"; }

輸出範例

數字:255 共出現 6 次
數字:443 共出現 5 次
數字:906 共出現 5 次
數字:623 共出現 5 次
數字:586 共出現 4 次
數字:660 共出現 4 次
數字:873 共出現 4 次
數字:208 共出現 4 次
數字:247 共出現 4 次
數字:240 共出現 4 次

函式說明

擴充:多維陣列/物件屬性統計

// 統計物件陣列的某屬性
$objects = [...]; // [{id:1, type:'A'}, {id:2, type:'B'}, ...]
$types = array_column($objects, 'type'); // ['A', 'B', ...]
$freq = array_count_values($types);
arsort($freq);

效能提示

  • 記憶體:array_count_values 建立新陣列,百萬級資料約佔數十 MB,可接受。
  • 大數據量:超過千萬筆建議用資料庫 GROUP BY ... ORDER BY COUNT(*) DESC LIMIT 10 或 Redis Sorted Set 完成。
  • 串流處理:無法一次載入記憶體時,分批統計再合併計數陣列。

善用內建函式,少寫迴圈,代碼更簡潔且效能更優。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函式作用
array_count_values()統計陣列中每個值出現次數,回傳 [值 => 次數]
arsort()依值由大到小排序,保持鍵值關聯
array_slice($arr, 0, 10, true)取前 10 元素,true 保留原鍵