PHP:如何根据另一数组的ID列表汇总指定数组的分数
解决思路与代码示例
核心步骤:
- 先以目标ID列表为基础,初始化结果数组,每个ID对应初始总分0(确保即使ID无分数记录也能保留键)
- 遍历分数数组,对每个记录的ID,若存在于结果数组中则累加分数
代码实现(PHP):
// 示例学生分数数组 $scores = [ ['student_id' => 1, 'score' => 10], ['student_id' => 1, 'score' => 10], ['student_id' => 2, 'score' => 10], ['student_id' => 3, 'score' => 10], ['student_id' => 4, 'score' => 5], // 不在目标列表,自动忽略 ]; // 目标学生ID列表 $list = [1, 2, 3]; // 初始化结果数组:ID为键,初始总分0 $result = array_fill_keys($list, 0); // 遍历分数数组累加总分 foreach ($scores as $scoreItem) { $studentId = $scoreItem['student_id']; // 仅处理目标列表内的ID if (isset($result[$studentId])) { $result[$studentId] += $scoreItem['score']; } } // 输出结果:Array ( [1] => 20 [2] => 10 [3] => 10 ) print_r($result);
嵌套循环失败的可能原因:
- 未为目标ID初始化默认值,导致无分数记录的ID不会出现在结果中
- 循环顺序不合理(比如外层遍历分数数组,内层遍历ID列表),导致重复累加或判断逻辑出错
- 未正确处理ID类型匹配问题(如ID是字符串但列表里是数字)
内容的提问来源于stack exchange,提问作者shinichirou ikebe
相关产品推荐
相关产品推荐

