查找对象集之间的差异

时间:2018-07-18 07:08:29

标签: php laravel

我有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);
                }
            );

但不能到达那里。

2 个答案:

答案 0 :(得分:3)

使用array_diff_assoc

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
]