PHP Поиск дубликатов |вернуть новый массив, но сохранить ключи - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть массив объектов.В этом массиве есть повторяющиеся значения.Я хотел бы найти дубликаты в массиве, поместить их в новый массив, удалить оригинал, а затем получить распечатанную информацию из первого массива, где ключ из нового массива такой же.

Например:

Массив 1

[0] 
     [0] => ID: 123
     [1] => 0fac686d86aba414411b58f6bce53a76
[1] 
     [0] => ID: 124
     [1] => 0134b04a942cbc5336958c8cd09b82f3
[2] 
     [0] => ID: 125
     [1] => 0fac686d86aba414411b58f6bce53a76
[3] 
     [0] => ID: 126
     [1] => 0fac686d86aba414411b58f6bce53a76

Массив 2

[0]
    [0] => ID: 125
    [1] => ID: 126

Я знаю, что могу сделать что-то вроде поиска дубликатов:

    function array_not_unique( $array1 is array() )
{
  return array_diff_key( $array1 , array_unique( $a ) );
}

Но я зависаю, возвращаясь к первому массиву и извлекая идентификаторы, которые совпадают с дубликатами.

Для тех, кому, возможно, понадобится знать: я выполняю синтаксический анализRSS-канал и поиск MD5 узла.Так я определяю уникальность.

Заранее благодарю.

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Если эти идентификаторы уникальны, почему бы не сделать их ключом вашего исходного массива, с ними будет намного проще работать:

[123] => 0fac686d86aba414411b58f6bce53a76
[124] => 0134b04a942cbc5336958c8cd09b82f3

Это то, что вы имеете в виду?

    $a = array(
            123 => '0fac686d86aba414411b58f6bce53a76',
            124 => '0134b04a942cbc5336958c8cd09b82f3',
            125 => '0fac686d86aba414411b58f6bce53a76',
            126 => '0fac686d86aba414411b58f6bce53a76'
    );

    $values = array();
    $duplicate_keys = array();

    foreach ($a as $key => $value)
    {
            if (in_array($value, $values))
            {
                    $duplicate_keys[] = $key;
            }

            $values[] = $value;
    }

    foreach ($duplicate_keys as $id)
    {
            echo "Duplicate " . $id . ", " . $a[$id];
    }
0 голосов
/ 01 ноября 2010

Вы смотрели на функцию PHP array_unique()?Поддерживает ключи.

...