php 8.2 中统计数组元素出现次数最标准高效的方式是 array_count_values(),它接收一维索引数组(仅支持字符串或整数),返回值→频次的关联数组,自动区分类型,不支持对象等非法类型。

PHP 8.2 中统计数组中每个元素出现次数,最标准、高效且推荐的方式是使用内置函数 array_count_values()。它专为此类需求设计,无需手动循环,代码简洁,性能稳定。
核心函数:array_count_values() 的用法和限制
该函数接收一个一维索引数组(元素只能是字符串或整数),返回一个关联数组:键为原数组中的值,值为该值出现的次数。
- 支持 PHP 8.2 及所有现代版本,行为一致
- 不支持关联数组直接传入——若原数组带字符串键(如
['a'=>1, 'b'=>2]),需先用array_values($arr)提取纯值再统计 - 自动区分类型:
1(整数)和'1'(字符串)会被视为两个不同元素,分别计数 - 遇到对象、数组、null、resource 等类型会触发 Warning,不可用
基础统计示例(含输出说明)
以下代码在 PHP 8.2 中可直接运行:
<?php $arr = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']; $counts = array_count_values($arr); print_r($counts); ?>
输出结果为:
Array
(
[apple] => 3
[banana] => 2
[cherry] => 1
)
说明:apple 出现 3 次,banana 出现 2 次,cherry 出现 1 次。
筛选重复项(出现 ≥2 次的元素)
仅需组合 array_filter() 即可提取高频项:
<?php $arr = [1, 2, 2, 3, 4, 4, 4, 5]; $all = array_count_values($arr); $duplicates = array_filter($all, fn($freq) => $freq >= 2); // 可选:按键排序(升序),让结果更易读 ksort($duplicates); print_r($duplicates); ?>
输出:
Array
(
[2] => 2
[4] => 3
)
注意:array_filter() 默认保留原始键名,所以结果仍是「值 → 次数」结构,无需额外处理键名。
获取某个指定值的出现次数
如果只关心某一个元素(比如想知道 'cat' 出现几次),可结合 array_count_values() 和键访问:
<?php $arr = ['dog', 'cat', 'bird', 'cat', 'cat'];
$counts = array_count_values($arr);
$catCount = $counts['cat'] ?? 0; // 使用空合并避免未定义索引警告
echo "cat 出现了 {$catCount} 次"; // 输出:cat 出现了 3 次
?>
推荐始终用 ?? 0 容错,防止目标值不存在时报 Notice。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











