2010-11-01 71 views
0

我有一個對象數組。在這個數組中,有重複的值。我想找到數組中的重複項,將它們放在一個新數組中,刪除原始數據,然後從第一個數組中打印出來的信息,其中新數組中的鍵相同。PHP重複搜索|返回新的數組,但保持鍵

例如:

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

但我掛斷是,去吧ck放入第一個數組中,並提取與重複項匹配的ID。

對於那些可能需要知道的:我解析一個RSS源並找到節點的MD5。這就是我決定獨特性的方式。

預先感謝您。

回答

0

你看過PHP的array_unique()函數嗎?它維護密鑰。

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]; 
    } 
+0

謝謝Jochen!這讓我走上了正確的道路,現在項目已經完成。 – Steven 2010-11-01 21:59:19