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

PHP多维数组合并去重:同名账户数据合并与重复项过滤

解决PHP合并同name账户数据并去重的问题

别担心,我来帮你一步步实现这个需求!你的核心目标是把数组中name相同的项合并,并且过滤掉accounts里的重复条目,我们可以在你现有代码的基础上,加上分组和去重的逻辑,具体实现如下:

完整代码实现

// 1. 先执行你现有的预处理逻辑,清理不需要的字段
$processedArray = array_map(function($tmp) {
    unset($tmp['total_net_movement']);
    if (isset($tmp['accounts'])) {
        foreach ($tmp['accounts'] as $key => $value) {
            unset($value['net_movement']);
            $tmp['accounts'][$key] = $value;
        }
    }
    return $tmp;
}, $array);

// 2. 按`name`分组,合并相同name下的所有accounts数据
$groupedData = [];
foreach ($processedArray as $item) {
    $accountName = $item['name'];
    // 如果该name还未创建分组,先初始化结构
    if (!isset($groupedData[$accountName])) {
        $groupedData[$accountName] = [
            'name' => $accountName,
            'accounts' => []
        ];
    }
    // 把当前item的accounts合并到对应分组中
    $groupedData[$accountName]['accounts'] = array_merge(
        $groupedData[$accountName]['accounts'],
        $item['accounts']
    );
}

// 3. 对每个分组的accounts按`id`去重(如果需要按code去重,替换成$account['code']即可)
foreach ($groupedData as &$group) {
    $uniqueAccounts = [];
    foreach ($group['accounts'] as $account) {
        // 利用数组键名的唯一性自动去重
        $uniqueAccounts[$account['id']] = $account;
    }
    // 转回索引数组,符合期望的输出格式
    $group['accounts'] = array_values($uniqueAccounts);
}

// 4. 把分组后的关联数组转换为索引数组,得到最终结果
$result = array_values($groupedData);

// 查看结果
print_r($result);

代码逻辑拆解

  1. 预处理阶段:保留你原本的代码,负责清理掉不需要的字段(total_net_movement和net_movement),确保后续处理的数据是干净的。
  2. 分组合并:遍历预处理后的数组,以name作为分组的唯一标识,把所有相同name的accounts数组合并到一起,这样同一个账户分类下的所有子账户就都集中在一个数组里了。
  3. 去重处理:因为重复的子账户是通过id(或code)来判断的,我们用子账户的id作为新数组的键——PHP中数组的键名是唯一的,重复的id会自动覆盖(如果两个重复id的内容一致,不影响结果;如果内容有差异,你可以根据需求选择保留第一个或最后一个)。最后用array_values把关联数组转回索引数组,和你期望的输出格式一致。
  4. 格式转换:把分组后的关联数组转换成索引数组,就得到了你想要的最终结果。

注意事项

  • 如果你的重复判断依据不是id而是code,只需要把代码中$uniqueAccounts[$account['id']]改成$uniqueAccounts[$account['code']]即可。
  • 如果后续还有多个不同name的项,这段代码也能自动分组合并,扩展性很好。

内容的提问来源于stack exchange,提问作者jaydon.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:09:23