例如,我有两个对象数组
$arr1 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
(new MyClass())->setId(3),
];
$arr2 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
];
我需要找出这两个数组之间的区别,在这个例子中,我需要得到一个包含单个元素的数组,这个元素的id==3。
我知道我应该使用array_udiff(也许),但我不知道如何使用。
以下逻辑可能会有所帮助:
<?php
class MyClass
{
public $id = null;
public function setId($id) {
$this->id = $id;
return $this;
}
}
$arr1 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
(new MyClass())->setId(3),
];
$arr2 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
];
$difference = array_udiff($arr1, $arr2,
function ($objOne, $objTwo) {
return $objOne->id - $objTwo->id;
}
);
输出:
Array
(
[2] => MyClass Object
(
[id] => 3
)
)
工作演示