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

PHP如何将重复键合并为单个键并汇总该键对应的所有值

PHP实现相同gameId汇总gameValue方案

已知问题修正

你的原有代码存在两处明显笔误:

  • 变量名不一致:定义的$gamedId多了字符d,后续使用的是$gameId
  • 取值来源错误:$k["gameValue"]中的$k未定义,应该从当前遍历的$ga中取值

实现思路

  • 先用gameId作为临时关联数组的键,天然避免ID重复
  • 遍历每条数据时,若对应gameId的键不存在则先初始化空数组
  • 将当前gameValue追加到对应ID的数组中,可根据需求选择是否对value去重
  • 最后将临时关联数组转换为你要求的目标结构

完整代码

保留重复value版本

// 初始化临时关联数组做聚合
$temp = [];
foreach ($games as $ga) {
    $gameId = $ga["gameId"];
    $gameValue = $ga["gameValue"];
    // 不存在对应ID则初始化空数组
    if (!isset($temp[$gameId])) {
        $temp[$gameId] = [];
    }
    // 追加value到对应数组
    $temp[$gameId][] = $gameValue;
}

// 转换为目标结构
$result = [];
foreach ($temp as $gameId => $valueList) {
    $result[] = [$gameId => $valueList];
}

同ID下value去重版本

只需修改追加value的逻辑即可:

if (!in_array($gameValue, $temp[$gameId])) {
    $temp[$gameId][] = $gameValue;
}

输出示例

以你提供的测试数据为例,最终输出结构如下:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 2
                )
        )
    [1] => Array
        (
            [1] => Array
                (
                    [0] => 1
                    [1] => 1
                )
        )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:36:07