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

PHP如何按键合并子数组并对值求和?

解决PHP单元素数组合并:重复键值求和问题

嘿,别慌!我来帮你搞定这个PHP数组合并求和的问题~ 你的需求很明确:把多个单元素的关联数组合并,保留用户ID作为键,重复ID的分数累加。

核心思路

我们需要初始化一个空数组来存放最终结果,然后遍历每一个单元素数组:

  • 取出每个数组里的用户ID(键)和对应的分数(值)
  • 如果结果数组里已经有这个用户ID,就把分数累加进去
  • 如果没有,就直接把这个ID和分数添加到结果数组里

具体实现代码

假设你的所有单元素数组都存放在一个大数组$singleArrays里,代码可以这样写:

// 示例:你的所有单元素数组集合
$singleArrays = [
    [36868 => 3],
    [2112 => 3],
    [35901 => 3],
    [6496 => 3],
    [87 => 3],
    [36868 => 3],
    [68 => 3],
    [9068 => 3],
    [47 => 3],
];

// 初始化结果数组
$result = [];

foreach ($singleArrays as $arr) {
    // 取出当前单元素数组的键(用户ID)和值(分数)
    $userId = key($arr);
    $score = current($arr);
    
    // 判断是否已存在该用户ID,存在则累加,不存在则赋值
    if (isset($result[$userId])) {
        $result[$userId] += $score;
    } else {
        $result[$userId] = $score;
    }
}

// 输出最终结果
print_r($result);

运行这段代码后,你会得到期望的结果:

Array
(
    [36868] => 6
    [2112] => 3
    [35901] => 3
    [6496] => 3
    [87] => 3
    [68] => 3
    [9068] => 3
    [47] => 3
)

更简洁的写法(用array_reduce)

如果你喜欢更简洁的代码,可以用array_reduce函数来实现:

$result = array_reduce($singleArrays, function($carry, $item) {
    $userId = key($item);
    $score = current($item);
    // 用null合并运算符简化判断:不存在则默认0,再加当前分数
    $carry[$userId] = ($carry[$userId] ?? 0) + $score;
    return $carry;
}, []);

print_r($result);

为什么你的之前的代码没生效?

你之前写的这段代码逻辑有问题:

foreach ($array as $key => &$value) { if ($value[0] == $value[1]) { $value[1] += $value[1]; } }

因为你的数组是关联数组(键是用户ID,不是0、1这种索引),所以$value[0]和$value[1]根本不存在,判断条件永远不成立,自然不会有任何累加效果。

另外,即使改成[userid => xxx, score => xxx]的结构,也需要针对userid字段去判断累加,而不是比较数组里的元素哦~

如果是这种结构的数组,处理代码可以这样写:

$userScoreArrays = [
    ['userid' => 36868, 'score' => 3],
    ['userid' => 2112, 'score' => 3],
    // ... 其他元素
];

$result = [];
foreach ($userScoreArrays as $item) {
    $userId = $item['userid'];
    $score = $item['score'];
    $result[$userId] = ($result[$userId] ?? 0) + $score;
}

这样也能得到正确的合并结果~

内容的提问来源于stack exchange,提问作者MarkyMark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:44:57