array_count_values用于统计数组值出现次数,返回值为键、次数为值的关联数组。1. 仅支持字符串和整数类型,包含null或对象会触发警告。2. 对关联数组只统计值,忽略键名,适用于状态统计场景。3. 使用前应通过array_filter过滤null等无效值,确保类型安全。4. 可保留0或空字符串,需自定义过滤条件。5. 常用于报表生成与日志分析,配合过滤函数可高效处理数据。

在PHP开发中,array_count_values 是一个非常实用的内置函数,用于统计数组中每个值的出现次数。它适用于索引数组或关联数组的值部分计数,但有一些使用细节和限制需要注意,尤其在处理空值或需要过滤数据时。
该函数接收一个数组作为参数,返回一个新的关联数组,键为原数组的值,值为该值出现的次数。
$fruits = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']; $result = array_count_values($fruits); print_r($result); // 输出: // Array // ( // [apple] => 3 // [banana] => 2 // [orange] => 1 // )
注意:传入的数组元素必须是字符串或整数类型。如果包含对象、数组或 null 值,会触发警告。
即使原始数组是关联数组,array_count_values 也只关心“值”,不关心键名。
立即学习“PHP免费学习笔记(深入)”;
$data = [
'user1' => 'active',
'user2' => 'inactive',
'user3' => 'active',
'user4' => 'pending'
];
$statusCount = array_count_values($data);
print_r($statusCount);
// 输出:
// Array
// (
// [active] => 2
// [inactive] => 1
// [pending] => 1
// )
这在统计用户状态、订单类型等场景中非常有用。
array_count_values 不支持 null、数组或对象作为元素。如果数组中含有 null 或空字符串,null 会导致警告,而空字符串 '' 会被正常统计。
为了避免错误,建议在调用前先过滤无效值:
$mixed = ['a', 'b', null, 'a', '', 'b', 0];
// 过滤掉 null 和空字符串,保留 0 和 ''
$filtered = array_filter($mixed, function($value) {
return $value !== null && $value !== '';
});
$count = array_count_values($filtered);
print_r($count);
// 输出:
// Array
// (
// [a] => 2
// [b] => 2
// [0] => 1
// )
若需保留 0 和空字符串但排除 null,可单独处理条件。例如只排除 null:
$excludeNull = array_filter($mixed, fn($v) => $v !== null, ARRAY_FILTER_USE_BOTH); $countSafe = array_count_values($excludeNull);
这样可以避免 Warning: array_count_values(): Can only count STRING and INTEGER values!
基本上就这些。合理使用 array_count_values 配合 array_filter,能高效完成数据统计任务,尤其在报表生成、日志分析等场景中表现良好。关键在于预处理数据,确保类型安全。不复杂但容易忽略细节。
以上就是php中array_count_values统计值出现次数_php关联数组计数与空值过滤方法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号