PHP数组统计唯一ID数量:是否必须通过循环实现?
统计PHP数组中唯一ID的总数
嘿,这个需求其实很容易实现,你完全不需要手动写循环(当然硬要写也可以,但用PHP内置数组函数组合会更简洁高效)!先帮你理清楚怎么处理:
首先看你的数组结构,我们需要先拿到内层的events数组,然后提取所有id值,去重后统计数量就行。
推荐实现方式(无手动循环)
用array_column提取所有ID,array_unique去重,最后count统计:
// 你的原始数组 $data = [ [ 'events' => [ ['label' => 'apple', 'id' => 3], ['label' => 'onion', 'id' => 3], ['label' => 'pear', 'id' => 2], ['label' => 'orange', 'id' => 1], ['label' => 'grape', 'id' => 41], ] ] ]; // 提取events数组里所有的id $allIds = array_column($data[0]['events'], 'id'); // 移除重复的id $uniqueIds = array_unique($allIds); // 统计唯一id的数量 $uniqueCount = count($uniqueIds); echo $uniqueCount; // 输出:4,和你期望的结果一致
手动循环的实现方式(可选)
如果你想自己写循环逻辑,也可以这样做,本质是遍历数组并记录已出现的ID:
$uniqueIds = []; // 遍历events数组 foreach ($data[0]['events'] as $event) { // 如果当前id还没被记录,就加入数组 if (!in_array($event['id'], $uniqueIds)) { $uniqueIds[] = $event['id']; } } $uniqueCount = count($uniqueIds); echo $uniqueCount; // 同样输出4
简单说,内置函数的方式更简洁,而且PHP的内置函数底层实现通常比手动写的循环更高效,所以优先推荐第一种方法~
内容的提问来源于stack exchange,提问作者user779681
相关产品推荐
相关产品推荐

