You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:03:12