/ / Comparando 2 strings json para encontrar novas entradas - php, arrays, json, compare

Comparando 2 strings json para encontrar novas entradas - php, arrays, json, compare

Eu estou tentando comparar 2 json strings uns com os outros para encontrar todas as novas entradas na lista.

É assim que eu estou comparando:

$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);

Espero que ele retorne uma matriz com todas as novas entradas. No entanto, estou apenas recebendo uma matriz vazia em troca.

Qualquer ajuda seria apreciada!

Informação adicional: Eu também estou tentando comparar os valores dos arrays. É assim que estou tentando fazer isso:

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"];
}
}
}

No entanto, parece que $ json ["whitelist_name"] é indefinido

Respostas:

1 para resposta № 1

array_diff_assoc é o caminho para obter diferenças de matrizes associativas:

$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);

Este pequeno pedaço de código irá descobrir se algum whitelist_name é diferente no novo json que o antigo

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