比较两个JSON对象并返回不同的值和密钥名称



我有两个json对象

object1 = [{"acc_number":1001,"acc_name":"admin","acc_loc":"headquarters"}]
object2 = [{"acc_number":1001,"acc_name":"New Admin","acc_loc":"branch"}]

因为acc_name和acc_loc(新的和旧的(不同,我想要如下结果:

result = [{"key_name":"acc_name","old_value":"admin","new_value":"New Admin}, 
{"key_name":"acc_loc","old_value":"headquarters","new_value":"branch}]

有人能帮我如何用PHP重新编程吗?非常感谢。

<?php
$one = json_decode(json_encode(array("acc_number" => 1001,"acc_name" => "admin","acc_loc" => "headquarters"), JSON_FORCE_OBJECT));
$two = json_decode(json_encode(array("acc_number" => 1001,"acc_name" => "New Admin","acc_loc" => "branch"), JSON_FORCE_OBJECT));
//print_r($one);
$results = array();
foreach ($one as $key => $value) {
$result = array();
if($value != $two->$key) {
$result['key_name'] = $key;
$result['old_value'] = $value;
$result['new_value'] = $two->$key;
array_push($results, $result);
}
}
print_r($results);
?>

输出

Output:
Array
(
[0] => Array
(
[key_name] => acc_name
[old_value] => admin
[new_value] => New Admin
)
[1] => Array
(
[key_name] => acc_loc
[old_value] => headquarters
[new_value] => branch
)

)

最新更新