在php的实际开发中,统计数组内相同数据的出现频次是非常常见的需求,比如统计用户投票的选项分布、统计订单中同一商品的购买次数等,php提供了内置函数array_count_values来高效完成这个任务。

array_count_values函数基本用法
array_count_values是php内置的数组处理函数,它的作用是统计数组中所有值出现的次数,返回一个关联数组,键是原数组的值,值是该值出现的次数。
函数的基本语法如下:
<?php /** * 统计数组中所有值出现的次数 * @param array $array 需要统计的数组,数组的值必须是string或者integer类型 * @return array 返回统计结果数组,键为原数组的值,值为出现次数 */ array_count_values(array $array): array ?>
基础使用示例
下面是一个简单的使用示例,统计一个包含重复元素的索引数组的相同数据出现次数:
<?php // 定义一个包含重复元素的数组 $test_array = [1, 2, 3, 2, 4, 1, 5, 1, 2]; // 使用array_count_values统计相同数据 $count_result = array_count_values($test_array); // 打印统计结果 print_r($count_result); ?>
上述代码的输出结果如下:
Array
(
[1] => 3
[2] => 3
[3] => 1
[4] => 1
[5] => 1
)
可以看到,数字1出现了3次,数字2出现了3次,其他数字各出现1次,统计结果和实际情况一致。
字符串数组的统计示例
array_count_values同样支持字符串类型的数组值,比如统计标签出现的次数:
<?php // 定义标签数组 $tag_array = ['php', 'java', 'php', 'python', 'java', 'php', 'go']; // 统计标签出现次数 $tag_count = array_count_values($tag_array); // 输出结果 print_r($tag_count); ?>
输出结果如下:
Array
(
[php] => 3
[java] => 2
[python] => 1
[go] => 1
)
使用注意事项
使用array_count_values函数时需要注意以下几点限制:
- 原数组的值只能是string或者integer类型,如果出现其他类型比如float、array、object等,函数会抛出警告,并且对应的元素不会被统计。
- 如果原数组的值是float类型,会被转换为integer类型之后再统计,比如1.5会被当作1处理。
- 统计结果数组的键会保持原数组值的类型,字符串值对应字符串键,整数值对应整数键。
其他统计方式的对比
除了使用array_count_values,也可以通过循环遍历数组手动统计相同数据,示例代码如下:
<?php
$test_array = [1, 2, 3, 2, 4, 1, 5, 1, 2];
$manual_count = [];
foreach ($test_array as $value) {
if (!isset($manual_count[$value])) {
$manual_count[$value] = 0;
}
$manual_count[$value]++;
}
print_r($manual_count);
?>
这种手动统计的方式灵活性更高,可以处理非string和integer类型的值,但是代码量更多,而array_count_values是内置函数,执行效率更高,在符合类型要求的情况下优先使用内置函数。
实际应用场景
array_count_values常见的应用场景包括:
- 统计用户提交的表单中重复选项的数量,比如多选的兴趣标签统计。
- 统计订单数据中同一商品的下单次数,快速计算商品销量。
- 分析日志数据中重复错误码的出现频次,定位高频问题。
通过array_count_values函数,开发者可以用极少的代码完成数组相同数据的统计工作,大幅提升开发效率。
phparray_count_values数组统计相同数据计数修改时间:2026-06-11 18:27:28