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

合并多维关联数组分类并去除子数组重复标签

PHP数组去重并合并标签实现方案

需求说明:给定一个包含分类和对应标签的二维数组,需要去除重复的分类项(以分类键值对中的键为判断依据,比如示例中的2 => 'kategorie_01',键2即为分类标识),保留分类第一次出现的项,并将后续重复分类的所有标签合并到首个分类的标签中,同时去除标签中的重复项。

实现代码

<?php
$array = [
    [
        2 => 'kategorie_01',
        'tags' => [
            1 => 'tag_01',
            2 => 'tag_02',
        ],
    ],
    [
        3 => 'kategorie_02',
        'tags' => [
            2 => 'tag_02',
        ],
    ],
    [
        1 => 'Default',
        'tags' => [
            1 => 'tag_01',
            2 => 'tag_02',
        ],
    ],
    [
        2 => 'kategorie_01',
        'tags' => [
            2 => 'tag_02',
            3 => 'tag_03',
        ],
    ],
];

$result = [];
$processedCats = [];

foreach ($array as $item) {
    // 获取当前分类的唯一键(每个分类项的第一个键)
    $catKey = array_keys($item)[0];
    
    if (!isset($processedCats[$catKey])) {
        // 首次出现的分类,直接加入结果数组
        $result[] = $item;
        // 记录该分类在结果数组中的索引
        $processedCats[$catKey] = count($result) - 1;
    } else {
        // 重复分类,合并标签并去重
        $targetIndex = $processedCats[$catKey];
        $result[$targetIndex]['tags'] = array_unique(array_merge($result[$targetIndex]['tags'], $item['tags']));
    }
}

print_r($result);
?>

代码说明

  • $processedCats用于记录已处理分类的键及其在结果数组中的位置,避免重复遍历查找,提升效率。
  • 遍历过程中通过array_keys($item)[0]提取分类的唯一标识键,确保分类判断的准确性。
  • 首次出现的分类直接存入结果数组;重复分类则合并标签,利用array_merge整合标签列表后,通过array_unique去除重复标签,同时保留标签原有的键值关系。
  • 最终结果会严格保留分类首次出现的顺序,且标签无重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:05:17