开发者

PHP Duplicate search | return new array but maintain keys

开发者 https://www.devze.com 2023-01-23 12:32 出处:网络
I have an array of objects. In this array, there are duplicate values. I would like to find the duplicates in the array, place them in a new array, remove the original, and then get print out informat

I have an array of objects. In this array, there are duplicate values. I would like to find the duplicates in the array, place them in a new array, remove the original, and then get print out information from th开发者_C百科e first array where the key from the new array is the same.

For instance:

Array 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

Array 2

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

I know I can do something like to find the duplicates:

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

But my hangup is, going back into the the first array and pulling out the IDs that match the duplicates.

For those that might need to know: I am parsing an RSS feed and finding the MD5 of a node. That is how I am determining uniqueness.

Thank you in advance.


If those IDs are unique, why not make them the key of your original array, it'll be much easier to work with:

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

Is this what you mean?

    $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];
    }


Have you looked at PHP's array_unique() function? It maintains keys.

0

精彩评论

暂无评论...
验证码 换一张
取 消