2015-08-26 116 views
0

我有一個數組,看起來與此類似:查找重複值多維數組

Array 
(
    [0] => Array 
     (
      [0] => Model2345 
      [1] => John Doe 
      [2] => SN1234 
     ) 

    [1] => Array 
     (
      [0] => Model2345 
      [1] => John Doe 
      [2] => SN3456 
     ) 

    [2] => Array 
     (
      [0] => Model1234 
      [1] => Jane Doe 
      [2] => SN3456 
     ) 
) 

我希望有一種方法來檢查重複的值,鍵[1](李四/簡Doe鍵)和[2](SNxxxx鍵),但忽略鍵[0]的重複項。這如何實現?

+0

可以迭代該陣列,並檢查如果它具有重複的那個特定索引 – Sherlock

+0

使用'array_intersect()'。 – aldrin27

+1

可能重複[在多維數組中找到重複值](http://stackoverflow.com/questions/18438140/find-duplicate-value-in-multi-dimensional-array) –

回答

0

你可以使用array_unique($array);,但它是返回數組的唯一元素,在你的情況下只返回一個元素。

0

此問題已經回答here。以下是該問題的accepted answer中的代碼。

它利用array_intersect()函數。

<?php 
$array = array(array("test data","testing data"), array("new data","test data"), array("another data", "test data", "unique data")); 
$result = array(); 

$first = $array[0]; 
for($i=1; $i<count($array); $i++) 
{ 
    $result = array_intersect ($first, $array[$i]); 
    $first = $result; 
} 
print_r($result); 
?> 

OUTPUT:

陣列([0] =>測試數據)

+0

我試過這與我的數組,但得到即使有明顯的重複也是空的結果。那是因爲你的例子是整數而不是字符串? – Wes

+0

我測試了代碼,它對字符串也很好。我已經使用完全符合**的代碼更新了代碼。當然,這隻適用於**所有三個子數組中都有一個共同值的情況,這意味着它將爲您的示例數組顯示空結果。你是否正在尋找一個即使只是一個重複,或只是跨所有陣列? –

+0

啊我看到了 - 所以這不適合我。我甚至需要重複一次。 – Wes

0

嘗試這種情況:

$array = your_array(); 

$current = current($array); 
foreach($array as $key => $val){ 
$duplicate[$key] = array_intersect($current, $val); 
} 

echo($duplicate); 
+0

這幾乎可以工作,但不管是否有重複,它總是打印第一個數組。 – Wes