【发布时间】:2021-09-23 05:02:14
【问题描述】:
所以我有 2 个 json 文件需要合并在一起,但情况有些独特。
所以让我们调用第一个 movies.json:
[
{
"title": "Title of Movie 1",
"description": "description of Movie 1",
"link": "CDN_url_to_movie1",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 2",
"description": "description of Movie 2",
"link": "CDN_url_to_movie2",
"filters": "list, of, filters"
}
]
让我们调用第二个movies2.json
[
{
"title": "Title of Movie 1",
"description": "description of Movie 1",
"link": "CDN_url_to_movie1"
}
{
"title": "Title of Movie 2",
"description": "description of Movie 2",
"link": "CDN_url_to_movie2",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 3",
"description": "description of Movie 3",
"link": "CDN_url_to_movie3"
}
]
我需要合并这两个文件以确保没有重复文件,同时考虑到一个文件或另一个文件中可能不存在过滤器。
因此我想要的 2 个示例的输出如下所示
[
{
"title": "Title of Movie 1",
"description": "description of Movie 1",
"link": "CDN_url_to_movie1",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 2",
"description": "description of Movie 2",
"link": "CDN_url_to_movie2",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 3",
"description": "description of Movie 3",
"link": "CDN_url_to_movie3"
}
]
我目前拥有的如下所示
<?php
$arr1 = file_get_contents('movies.json');
$arr2 = json_decode($arr1, true);
$arr3 = file_get_contents('movies2.json');
$arr4 = json_decode($arr3, true);
$arr5 = array_unique(array_merge($arr2, $arr4), SORT_REGULAR);
$arr = json_encode($arr5, JSON_PRETTY_PRINT);
file_put_contents('movies3.json', $arr);
这样的结果是:
[
{
"title": "Title of Movie 1",
"description": "description of Movie 1",
"link": "CDN_url_to_movie1",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 2",
"description": "description of Movie 2",
"link": "CDN_url_to_movie2",
"filters": "list, of, filters"
}
{
"title": "Title of Movie 1",
"description": "description of Movie 1",
"link": "CDN_url_to_movie1"
}
{
"title": "Title of Movie 3",
"description": "description of Movie 3",
"link": "CDN_url_to_movie3"
}
]
正如我们所见,结果并不理想。尽管它删除了重复的“电影 2”,但它认为每个“电影 1”都是独一无二的……我假设是因为一个有“过滤器”键,而另一个没有。
如何合并这两个文件以获得所需的输出?
【问题讨论】:
-
这能回答你的问题吗? Merging two json in PHP
-
@OMiShah 否,该页面上的解决方案会产生与该页面上列出的完全相同的结果。它们最终会出现重复。
-
您能否指定条目何时重复?这不是不言而喻的。当标题相同时,它们是否相同?如果 URL 不同怎么办?同一标题的 URL 可以不同吗?还是说明?那么,我们如何确定某部电影是同一部电影,以及如何处理这些条目之间的任何差异?
-
如果标题相同,则为重复。如果其中一个包含
filters键,那就是要保留的那个。