6

有没有比结合使用 array-walk 和反序列化更好的方法?

我有两个包含对象的数组。对象可以相同也可以不同。我想合并两个数组并只保留唯一的对象。

在我看来,对于如此微不足道的事情,这似乎是一个很长的解决方案。还有其他方法吗?

class Dummy
{
    private $name;
    public function __construct($theName) {$this->name=$theName;}
}

$arr = array();
$arr[] = new Dummy('Dummy 1');
$arr[] = new Dummy('Dummy 2');
$arr[] = new Dummy('Dummy 3');

$arr2 = array();
$arr2[] = new Dummy('Dummy 1');
$arr2[] = new Dummy('Dummy 2');
$arr2[] = new Dummy('Dummy 3');

function serializeArrayWalk(&$item)
{
    $item = serialize($item);
}

function unSerializeArrayWalk(&$item)
{
    $item = unserialize($item);
}

$finalArr = array_merge($arr, $arr2);
array_walk($finalArr, 'serializeArrayWalk');
$finalArr = array_unique($finalArr);
array_walk($finalArr, 'unSerializeArrayWalk');

var_dump($finalArr);
4

0 回答 0