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

PHP合并二维数组并删除双方共有整行数据的实现方案

实现方法

核心逻辑是先找出两个数组中重复出现的Id,再过滤掉所有对应Id的条目即可,以下是两种常用实现方案:

方案1:哈希计数法(适合大数据量场景)

先统计所有Id的出现次数,仅保留出现次数为1的条目:

// 统计所有Id的出现频次
$idCount = [];
$allItems = array_merge($array1, $array2);
foreach ($allItems as $item) {
    $id = $item['Id'];
    $idCount[$id] = isset($idCount[$id]) ? $idCount[$id] + 1 : 1;
}

// 筛选仅出现1次的条目
$result = [];
foreach ($allItems as $item) {
    if ($idCount[$item['Id']] === 1) {
        $result[] = $item;
    }
}

方案2:内置函数组合写法(适合小数据量场景)

利用array_column、array_intersect先提取重复Id,再过滤合并:

// 提取两个数组的Id集合
$ids1 = array_column($array1, 'Id');
$ids2 = array_column($array2, 'Id');
// 取交集得到同时存在于两个数组的Id
$dupIds = array_intersect($ids1, $ids2);

// 分别过滤两个数组后合并
$result = array_merge(
    array_filter($array1, fn($v) => !in_array($v['Id'], $dupIds)),
    array_filter($array2, fn($v) => !in_array($v['Id'], $dupIds))
);

// 可选:重置为连续数字索引
$result = array_values($result);

注:如果PHP版本低于7.4不支持箭头函数,可替换为传统匿名函数:

array_filter($array1, function($v) use ($dupIds) {
    return !in_array($v['Id'], $dupIds);
})

两种方案输出的结果都和你需要的目标格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03