PHP新手求教:如何找出嵌套数组中重复次数最多的元素
找出嵌套数组中重复次数最多的元素的PHP实现
针对你的需求,我们可以通过组合几个PHP内置函数高效解决,下面是具体步骤和函数说明:
用到的核心函数
array_column():从多维数组中提取指定列的值,把嵌套数组里的id字段提取成一维数组,方便后续统计。array_count_values():统计一维数组中每个值的出现次数,返回一个键为原数组值、值为对应次数的关联数组。max():获取统计结果中的最大次数值,用来筛选出重复次数最多的元素。array_filter()+array_keys():过滤出所有次数等于最大值的元素,再提取这些元素的键(也就是我们要找的id值)。
完整代码示例
$arr = [ ["id"=>1], ["id"=>2], ["id"=>2], ["id"=>2], ["id"=>3], ["id"=>4], ["id"=>4], ["id"=>4] ]; // 1. 提取所有id值到一维数组 $ids = array_column($arr, 'id'); // 2. 统计每个id的出现次数 $counts = array_count_values($ids); // 3. 获取最大的重复次数 $maxCount = max($counts); // 4. 筛选出所有重复次数等于最大值的id $result = array_keys(array_filter($counts, function($count) use ($maxCount) { return $count === $maxCount; })); print_r($result); // 输出:Array ( [0] => 2 [1] => 4 )
上面的写法拆分了每一步逻辑,新手能清晰理解每个环节的作用;如果想简化代码,也可以把部分步骤合并,但可读性会稍弱一些。
内容的提问来源于stack exchange,提问作者mkhzr
相关产品推荐
相关产品推荐

