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

PHP如何按嵌套数组内的class键合并多维数组

你可以通过临时分组再合并的方式实现,PHP 7.4 下可直接运行的代码如下:

// 定义临时数组,以 class 字段值为键做分组
$grouped = [];
foreach ($array as $item) {
    $classKey = $item['class'];
    // 首次遇到该 class 时直接存入
    if (!isset($grouped[$classKey])) {
        $grouped[$classKey] = $item;
        continue;
    }
    // 已存在该 class 则合并新的字段
    $grouped[$classKey] = array_merge($grouped[$classKey], $item);
}
// 重置外层数组的数字索引,得到最终结果
$outcome = array_values($grouped);

如果偏好更简洁的函数式写法,也可以用 array_reduce 实现,效果完全一致:

$outcome = array_values(array_reduce($array, function ($carry, $item) {
    $carry[$item['class']] = isset($carry[$item['class']]) 
        ? array_merge($carry[$item['class']], $item)
        : $item;
    return $carry;
}, []));

两种实现的逻辑都是先以 class 值为键做临时分组,合并同分组下的所有键值对,最后重置外层数组索引得到你需要的结构。如果同 class 下存在相同的人名字段,后出现的字段值会自动覆盖先出现的值,符合你给出的示例预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:18:01