介紹 PHP 內建函數 array_count_values():傳入陣列,回傳以「值為鍵、出現次數為值」的關聯陣列。適用於票數統計、詞頻分析、資料去重檢測等場景。
array array_count_values(array $array): array
<?php
$array = [1, "hello", 1, "world", "hello"];
$result = array_count_values($array);
print_r($result);
/*
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
*/
?>
<?php
$votes = ['A', 'B', 'A', 'C', 'A', 'B', 'B'];
$counts = array_count_values($votes);
arsort($counts);
$mode = key($counts); // 'A'
echo "眾數: $mode (出現 {$counts[$mode]} 次)";
?>
<?php
$data = [10, 20, 30, 20, 40];
$counts = array_count_values($data);
$duplicates = array_filter($counts, fn($v) => $v > 1);
if ($duplicates) {
echo "發現重複值: " . implode(', ', array_keys($duplicates));
}
// 輸出:發現重複值: 20
?>
<?php
$text = "PHP 是一種流行的伺服器端腳本語言 PHP 很強大";
$words = preg_split('/\s+/', $text);
$freq = array_count_values($words);
arsort($freq);
foreach ($freq as $word => $count) {
echo "{$word}: {$count}\n";
}
/*
PHP: 2
是: 1
一種: 1
流行的: 1
伺服器端: 1
腳本語言: 1
很強大: 1
*/
?>
array_merge(...$arr) 或遞迴)。'Hello' 與 'hello' 視為不同值。需統一大小寫請先 array_map('strtolower', $arr)。GROUP BY COUNT(*) 或串流處理。| 函數 | 用途 |
|---|---|
array_unique() | 移除重複值(保留第一次出現) |
array_keys() | 取得所有鍵名 |
count() | 計算陣列元素總數 |
array_count_values() 是 PHP 陣列統計分析的核心工具,善用它能以極少代碼完成複雜的頻率計算任務。