2016-05-06 10 views
1

2つのjson文字列を互いに比較して、リスト内のすべての新しいエントリを見つけようとしています。2つのjson文字列を比較して新しいエントリを見つける

JSON 1:http://164.132.195.253/test/new.json

JSON 2:http://164.132.195.253/test/last.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」]思える未定義

+0

あなたのjsonデコードが連想配列を返しています。 array_diff_assocが役に立ちます。 – Atif

+0

素晴らしい、それはそれを作った!誰かがwhitelist_nameを変更したかどうか調べることが何とか可能かどうか知っていますか? –

答えて

0

array_diff_assocは、連想配列の違いを取得する方法です。

任意のwhitelist_nameは古いもの

より新しいJSONで異なる場合
$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); 

このコードの小片が出ています0

+0

すごい、それはそれを作った!誰かがwhitelist_nameを変更したかどうか調べることが何とか可能かどうか知っていますか? –

+0

変更された値を見つけるには、配列をループして比較して、それらが同じかどうかを調べる必要があります。 – Atif

+0

@MartinOそれを行うにはコードサンプルが必要です – Atif

関連する問題