簡體   English   中英

如何獲得對象的兩個 arrays 之間的差異

[英]How to get the difference between two arrays of objects

例如,我有 2 個對象數組

$arr1 = [
  (new MyClass())->setId(1),
  (new MyClass())->setId(2),
  (new MyClass())->setId(3),
];

$arr2 = [
  (new MyClass())->setId(1),
  (new MyClass())->setId(2),
];

我需要找出這 2 個 arrays 之間的區別,在這個例子中,我需要得到一個包含單個元素的數組,即 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;
    }
);

Output:

Array
(
    [2] => MyClass Object
        (
            [id] => 3
        )

)

工作演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM