我有2个对象,想找到它们之间的区别。仅返回差异的数组或对象。这两个对象如下所示。
{
"new": {
"crc_code": "00",
"serial_number": "239-03",
"reason": "Ir/b4c - no center rib",
"project_id": 9,
"wafer_id": 1,
"equipment_status_code_id": 7,
"plate_container_id": null,
"supplier_id": 1,
"container_slot_id": null,
"plate_quality_id": 1
},
"old": {
"crc_code": "00",
"serial_number": "239-03",
"reason": "Ir/b4c - no center rib",
"project_id": 9,
"wafer_id": 1,
"equipment_status_code_id": 2,
"plate_container_id": null,
"supplier_id": 1,
"container_slot_id": null,
"plate_quality_id": 2
}
}
解决此问题的最佳方法是什么?
更新人们问我已经尝试了什么?
遵循这些原则。
array_udiff($new, $old, function ($obj_a, $obj_b) {
return strcmp($obj_a, $obj_b);
}
);
但不能到达那里。
答案 0 :(得分:3)
return array_diff_assoc($obj->new, $obj->old);
答案 1 :(得分:1)
// convert object to array
$arr = json_decode(json_encode($obj), true);
// get the diff
$diff = array_diff($arr['new'], $arr['old']);
// result
array:1 [
"equipment_status_code_id" => 7
]