例如,我有2个对象数组
$arr1 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
(new MyClass())->setId(3),
];
$arr2 = [
(new MyClass())->setId(1),
(new MyClass())->setId(2),
];
我需要找到这2个数组之间的差异,在这个示例中,我需要获得一个包含单个元素的数组,其中一个元素的ID == 3。
我知道我应该使用array_udiff(也许),但是我不知道怎么做。
答案 0 :(得分:1)
以下逻辑可能会有所帮助:
<?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
)
)
工作demo