比较2个json字符串以查找新条目

时间:2016-05-06 04:37:49

标签: php arrays json compare

我试图将2个json字符串相互比较,以查找列表中的所有新条目。

这就是我比较它们的方式:

$json = json_decode(file_get_contents("new.json"), true);
$last_json = json_decode(file_get_contents("last.json"), true);
$difference = array_diff($json, $last_json);

print_r($difference);   

我希望它能返回一个包含所有新条目的数组。但是,我只是得到一个空数组。

任何帮助将不胜感激!

其他信息: 我也试图比较数组的值。这就是我尝试这样做的方式:

foreach($json["whitelist_name"] AS $json_key => $json_val) {
        foreach($last_json["whitelist_name"] AS $last_json_key => $last_json_val) {
            if($json["whitelist_name"] != $last_json["whitelist_name"]) {
                echo $json["whitelist_name"];
            }
        }
    }

但是,似乎$ json [" whitelist_name"]未定义

1 个答案:

答案 0 :(得分:2)

array_diff_assoc是获得关联数组差异的方法:

$json = json_decode(file_get_contents("new.json"), true);
$last_json = json_decode(file_get_contents("last.json"), true);
$difference = array_diff_assoc($json, $last_json);

print_r($difference); 

这段小代码会查明新json中的whitelist_name是否与旧版本不同

foreach($last_json as $key=>$value){
    if($value['whitelist_name'] != $json[$key]['whitelist_name']){
        // value is changed
    }else{
        // value is not changed
    }
}