PHP多维复杂数组按评估人ID、配置ID统计对应问题数量方法
多维数组按评估人、配置双维度统计问题数量实现方案
实现思路
- 第一步:展平原数组结构:原数组每个外层元素都额外包裹了一层一维数组,优先遍历外层数组,提取每个元素下下标为0的实际业务数据条目,得到所有待统计的有效条目集合
- 第二步:初始化统计存储容器:使用关联数组作为统计容器,键采用
评估人ID_配置ID的字符串拼接格式,值对应该组合下的问题数量,初始值为0 - 第三步:遍历有效条目执行计数:对每个业务条目,先读取
settings_row_id(配置ID),再遍历该条目下evaluator_row_id数组中的每一个评估人ID,每匹配到一组<评估人ID, 配置ID>组合,就将对应统计容器中该组合的计数加1 - 第四步:按需读取统计结果:如果需要查询特定组合的问题数量,直接用对应的组合键从统计容器中取值即可
可运行PHP示例代码
<?php // 原数组定义 $originalArray = [ [ [ "questions_row_id" => 1, "settings_row_id" => 1, "evaluator_row_id" => ["1", "4", "101"] ] ], [ [ "questions_row_id" => 2, "settings_row_id" => 1, "evaluator_row_id" => ["1", "100"] ] ], [ [ "questions_row_id" => 4, "settings_row_id" => 3, "evaluator_row_id" => ["1", "101"] ] ] ]; // 初始化统计容器 $stats = []; // 遍历处理原数组 foreach ($originalArray as $outerItem) { // 提取实际业务条目 $businessItem = $outerItem[0]; $settingId = $businessItem['settings_row_id']; $evaluatorIds = $businessItem['evaluator_row_id']; // 遍历当前条目的所有评估人ID foreach ($evaluatorIds as $evaluatorId) { $key = "{$evaluatorId}_{$settingId}"; // 不存在则初始化计数为0 if (!isset($stats[$key])) { $stats[$key] = 0; } $stats[$key]++; } } // 测试查询结果 // 评估人1+配置1的问题数量 echo "评估人ID=1且配置ID=1的问题数量:" . $stats['1_1'] . PHP_EOL; // 评估人1+配置3的问题数量 echo "评估人ID=1且配置ID=3的问题数量:" . $stats['1_3'] . PHP_EOL; ?>
运行以上代码输出结果完全符合需求预期:
评估人ID=1且配置ID=1的问题数量:2
评估人ID=1且配置ID=3的问题数量:1
内容的提问来源于stack exchange,提问作者Raiyan Islam
相关产品推荐
相关产品推荐

