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

PHP合并两个字段不完全匹配的JSON文件如何实现去重

问题原因

array_unique使用SORT_REGULAR参数时会完整对比数组的所有键值,有无filters字段的两个同电影条目会被判定为不同,因此无法实现预期的去重效果。

实现代码

<?php
// 读取并解析两个JSON文件
$movies1 = json_decode(file_get_contents('movies.json'), true);
$movies2 = json_decode(file_get_contents('movies2.json'), true);

$temp = [];
// 遍历所有条目,以title作为唯一去重标识,也可替换为更可靠的link字段
foreach (array_merge($movies1, $movies2) as $item) {
    $uniqueKey = $item['title'];
    if (!isset($temp[$uniqueKey])) {
        $temp[$uniqueKey] = $item;
    } else {
        // 已存在同标识条目时,补充缺失的filters字段
        if (!isset($temp[$uniqueKey]['filters']) && isset($item['filters'])) {
            $temp[$uniqueKey]['filters'] = $item['filters'];
        }
    }
}

// 重置为数字索引后导出JSON
$result = array_values($temp);
file_put_contents('movies3.json', json_encode($result, JSON_PRETTY_PRINT));
?>

逻辑说明

上述代码用电影的唯一标识(默认用title,可自行替换为link)作为临时数组的键来去重,同标识条目会自动保留字段更完整的版本,最终输出的结果完全符合预期格式,无重复条目,且保留存在的filters字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:48:03