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

PHP array_count_values() 統計陣列值出現次數:語法、範例與應用場景

     編輯:PHP 綜合知識

介紹 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
)
*/
?>

進階應用範例

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]} 次)";
?>

2. 檢測重複值

<?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
?>

3. 詞頻統計(簡易版)

<?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) 或遞迴)。
  • 值必須為 scalar(字串/整數/浮點數/布林),物件/陣列/資源會觸發警告並被忽略。
  • 大小寫敏感:'Hello' 與 'hello' 視為不同值。需統一大小寫請先 array_map('strtolower', $arr)。
  • 回傳陣列索引為原值型別(整數鍵保持整數,字串鍵保持字串)。

效能特性

  • 時間複雜度 O(n),單次遍歷完成計數。
  • 記憶體:回傳陣列大小 ≤ 原陣列唯一值數量。
  • 大量資料(百萬級)建議改用資料庫 GROUP BY COUNT(*) 或串流處理。

相關函數

函數用途
array_unique()移除重複值(保留第一次出現)
array_keys()取得所有鍵名
count()計算陣列元素總數

array_count_values() 是 PHP 陣列統計分析的核心工具,善用它能以極少代碼完成複雜的頻率計算任務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved