
本文介绍如何使用php内置函数高效提取嵌套关联数组中出现频次最高的所有id值,适用于需识别并列最高频元素的场景。
本文介绍如何使用php内置函数高效提取嵌套关联数组中出现频次最高的所有id值,适用于需识别并列最高频元素的场景。
在处理嵌套数组(如由数据库查询结果或API响应生成的结构化数据)时,常需统计某个字段(如 id)的出现频率,并准确获取所有“并列最多”的值——而非仅返回第一个匹配项。上述示例中,2 和 4 均出现3次,是真正的最高频元素,必须同时返回。
实现该目标的核心思路分为三步:
-
提取目标字段值:使用
array_column($data, 'id')快速拉平嵌套结构,得到纯数值数组[1,2,2,2,3,4,4,4]; -
统计频次:调用
array_count_values()生成键值对映射(如[2 => 3, 4 => 3, 1 => 1, 3 => 1]); -
筛选最大频次的所有键:先用
max($id_counts)获取最高频次(本例为3),再用array_keys($id_counts, $max_freq)反向检索所有对应键。
完整可运行代码如下:
<?php
$data = [
["id" => 1],
["id" => 2],
["id" => 2],
["id" => 2],
["id" => 3],
["id" => 4],
["id" => 4],
["id" => 4]
];
// 步骤1:提取所有id值
$ids = array_column($data, 'id');
// 步骤2:统计每个id的出现次数
$id_counts = array_count_values($ids);
// 步骤3:找出最高出现次数,并获取所有达到该次数的id
$max_frequency = max($id_counts);
$most_frequent_ids = array_keys($id_counts, $max_frequency);
print_r($most_frequent_ids); // 输出: Array ( [0] => 2 [1] => 4 )
?>⚠️ 注意事项:
立即学习“PHP免费学习笔记(深入)”;
-
array_column()在 PHP 5.5.0+ 可用;若使用旧版本,需改用array_map()手动提取; - 若原始数组中存在
null或非标量id(如数组、对象),array_count_values()会抛出警告,建议提前过滤或类型校验; - 该方案时间复杂度为 O(n),空间效率高,无需手动遍历或排序,是PHP原生推荐的最佳实践。
总结:结合 array_column、array_count_values 和 array_keys 三函数,即可简洁、健壮地解决“多值并列最高频”问题,是PHP数据聚合任务中的经典组合技。



















