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
相关产品推荐
相关产品推荐

