PHP在数组中的不同对象中重复删除键

时间:2011-06-20 20:52:02

标签: php foreach loops

我有一系列对象的数组,我想搜索对象以比较和删除重复项。结构的一个例子是:

Array
(
    [0] => stdClass Object
        (
            [lrid] => 386755343029
            [uu] => website.address.com
        )

    [1] => stdClass Object
        (
            [lrid] => 386755342953
            [uu] => website.address.com
        )
)

UU密钥是网站地址,我只想显示第一个版本而不是副本。任何帮助将不胜感激。

2 个答案:

答案 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在尝试将对象转换为字符串时不会失败,我不记得了。