PHP дублирует ключи в различных объектах в массиве - PullRequest
1 голос
/ 21 июня 2011

У меня есть массив с сериями объектов, и я хочу искать среди объектов, чтобы сравнить и удалить дубликаты. Пример структуры:

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

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

Ключ UU является адресом веб-сайта, и я хочу показать только первую версию, а не дубликат. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 21 июня 2011
$sites = array();
foreach ($array as $object) {
  if (!array_key_exists($object->uu, $sites)) {
    $sites[$object->uu] = $object;
  }
}

Если вам нужен «обычный массив», используйте array_values() с $sites в качестве аргумента.

1 голос
/ 21 июня 2011

Если объекты идентичны, вы можете просто вызвать array_unique ($ array);

http://us2.php.net/manual/en/function.array-unique.php

Если объекты разные, но имеют одинаковые идентификаторы, вы можете реализовать метод __toString () (обратите внимание на два подчеркивания впереди) и вернуть его (строка) $ this-> id; Это заставит функцию array_unique (которая преобразуется в строку) вызвать магический метод, который вы реализовали, и получить только идентификаторы объекта.

Возможно, вам все равно придется реализовать магический метод, чтобы удостовериться, что array_unique не потерпит неудачу при попытке привести ваши объекты к строкам, я не помню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...