資料分析、報表、日誌統計常需「出現頻率最高的前 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 次
| 函式 | 作用 |
|---|---|
| array_count_values() | 統計陣列中每個值出現次數,回傳 [值 => 次數] |
| arsort() | 依值由大到小排序,保持鍵值關聯 |
| array_slice($arr, 0, 10, true) | 取前 10 元素,true 保留原鍵 |