array_unique也可以用于对象数组吗?

时间:2010-12-22 08:49:12

标签: php arrays duplicate-removal

有没有比使用array-walk和unserialize更好的方法?

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

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

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);

0 个答案:

没有答案