如何在Laravel6/PHP7.4中统计嵌套数组中指定CID的出现次数?
统计嵌套数组中指定CID的出现次数(Laravel 6/PHP 7.4)
方法一:Laravel 集合便捷实现
利用Laravel集合的链式方法可以快速处理嵌套结构,代码简洁直观:
// 目标CID $targetCid = '99201000021102'; // 假设$response是你获取到的完整数组数据 $count = collect($response['data']) ->flatten() // 将嵌套的二级数组扁平化为一维集合 ->where('cid', $targetCid) // 筛选出CID匹配的元素 ->count(); // 统计匹配元素的数量 // 输出结果:2 dd($count);
方法二:原生PHP循环实现
如果更倾向原生PHP写法,双层循环直接遍历统计:
$targetCid = '99201000021102'; $count = 0; $groups = $response['data']; // 遍历外层分组数组 foreach ($groups as $group) { // 遍历分组内的每个元素 foreach ($group as $item) { // 严格匹配CID(避免类型转换导致的错误) if ($item['cid'] === $targetCid) { $count++; } } } // 输出结果:2 echo $count;
方法三:原生PHP函数式实现
结合array_reduce和array_column实现无循环统计:
$targetCid = '99201000021102'; $count = array_reduce($response['data'], function($total, $group) use ($targetCid) { // 提取当前分组的所有CID $cids = array_column($group, 'cid'); // 统计当前分组中匹配目标CID的数量,累加到总数 return $total + count(array_filter($cids, function($cid) use ($targetCid) { return $cid === $targetCid; })); }, 0); // 输出结果:2 echo $count;
常见问题排查
如果之前循环实现结果不符合预期,可能的原因:
- 未遍历内层数组:仅处理了
$response['data']的外层元素,未遍历每个元素内部的二级数组 - 匹配条件不严谨:使用松散比较
==而非严格比较===,可能因类型转换导致误判
内容的提问来源于stack exchange,提问作者Hải Nghĩa
相关产品推荐
相关产品推荐

