有没有比结合使用 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);