2015-08-26 114 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