PHP重复搜索|返回新数组但保持键

时间:2010-11-01 13:35:59

标签: php arrays duplicates

我有一个对象数组。在此数组中,存在重复值。我想在数组中找到重复项,将它们放在一个新数组中,删除原始数据,然后从第一个数组中获取打印信息,其中新数组中的键是相同的。

例如:

阵列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 ) );
}

但是我的挂断是,回到第一个数组并提取与重复数据匹配的ID。

对于那些可能需要知道的人:我正在解析RSS提要并找到节点的MD5。这就是我如何确定唯一性。

提前谢谢你。

2 个答案:

答案 0 :(得分:1)

如果这些ID是唯一的,为什么不将它们作为原始数组的键,它将更容易使用:

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

答案 1 :(得分:0)

你看过PHP的array_unique()函数了吗?它维护着钥匙。