PHP遍历二维数组,如何将多组统计结果存入allStats数组?
解决二维数组遍历统计的逻辑问题
你的代码核心问题有两个:
- 内部循环里重复创建
$returnArr,每次覆盖之前的值,最后得到的只会是子数组最后一个元素处理后的统计,不是整个子数组的汇总 - 处理完每个子数组的统计后,没有把
$returnArr存入$allStats最终数组
修正后的代码如下:
if ($newArray) { $allStats = []; foreach ($newArray as $arrs) { // 初始化当前子数组的统计变量 $alreadyhere = 0; $nothere = 0; $addedNewMember = 0; $addedTagToExistingMember = 0; foreach ($arrs as $arry2) { // 在这里写你的业务逻辑,根据条件递增对应变量 // 示例逻辑(替换成你的实际判断): // if (存在判断) $alreadyhere++; // elseif (不存在判断) $nothere++; // elseif (新增成员判断) $addedNewMember++; // else (更新成员标签判断) $addedTagToExistingMember++; } // 子数组遍历完成后,生成完整统计数组 $returnArr = [ 'newMembersCount' => $addedNewMember, 'updatedMembersCount' => $addedTagToExistingMember, 'existingMembersCount' => $alreadyhere, 'missingMembersCount' => $nothere, 'method' => $method // 确保$method变量在当前作用域可访问 ]; // 将当前子数组的统计结果追加到最终数组 $allStats[] = $returnArr; } }
关键调整说明:
- 把
$returnArr的创建移到内部foreach循环之后,确保拿到的是当前子数组所有元素处理后的汇总统计值 - 用
$allStats[] = $returnArr将每个子数组的统计结果存入最终数组,实现所有统计数据的收集 - 确认
$method变量在当前循环作用域内有效(如果是外部变量,需根据场景用use或global声明)
处理完成后,$allStats会是一个包含所有子数组统计结果的数组,每个元素对应一个子数组的完整统计数据。
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

