使用PHP

时间:2015-04-24 11:14:13

标签: php json search compare

这里我展示了一个我目前正在使用的例子,它工作但效率不高。我现在被困了几天试图找到一个有效的替代方案,但我缺乏知识。

我有2个JSON文件,两者共享相同的键,但值会发生变化。

$file_data = file_get_contents('./data_1.json');
$json_data_1 = json_decode($file_data, true);
$file_data = file_get_contents('./data_2.json');
$json_data_2 = json_decode($file_data, true);

foreach($json_data_1["items"] as $key_1=>$val_1){
 foreach($json_data_2["items"] as $key_2=>$val_2){
  if ($val_1['guy'] == $val_2['guy']) {

        echo "Match Found!";
        // here I check for any differences
        // in other values
        break(1);

    }
  }
}

2 个答案:

答案 0 :(得分:1)

$file_data = file_get_contents('./data_1.json');
$json_data_1 = json_decode($file_data, true);
$file_data = file_get_contents('./data_2.json');
$json_data_2 = json_decode($file_data, true);

 print_r(array_diff($json_data_1["items"],$json_data_2["items"]);

https://php.net/manual/en/function.array-diff.php

答案 1 :(得分:0)

因为它使用相同的密钥,你只需要使用一个foreach循环并使用密钥。

试试这段代码:

$file_data = file_get_contents('./data_1.json');
$json_data_1 = json_decode($file_data, true);
$file_data = file_get_contents('./data_2.json');
$json_data_2 = json_decode($file_data, true);

foreach($json_data_1["items"] as $key_1=>$val_1){
  if ($val_1['guy'] == $json_data_2['items'][$key_1]['guy']) {

        echo "Match Found!";
        // here I check for any differences
        // in other values
        break(1);

    }
  }
}