我有一系列对象的数组,我想搜索对象以比较和删除重复项。结构的一个例子是:
Array
(
[0] => stdClass Object
(
[lrid] => 386755343029
[uu] => website.address.com
)
[1] => stdClass Object
(
[lrid] => 386755342953
[uu] => website.address.com
)
)
UU密钥是网站地址,我只想显示第一个版本而不是副本。任何帮助将不胜感激。
答案 0 :(得分:3)
$sites = array();
foreach ($array as $object) {
if (!array_key_exists($object->uu, $sites)) {
$sites[$object->uu] = $object;
}
}
如果您想要“普通数组”,请使用array_values()
作为参数。
答案 1 :(得分:1)
如果对象相同,您应该只需调用array_unique($ array);
http://us2.php.net/manual/en/function.array-unique.php
如果对象不同但只有相同的id,则可以实现__toString()方法(注意前面的两个下划线)并让它返回(string)$ this-> id;这将导致array_unique函数(转换为字符串)调用您实现的魔术方法,并获得该对象的id。
你可能必须实现魔术方法以确保array_unique在尝试将对象转换为字符串时不会失败,我不记得了。