PHP:检查所有嵌套数组中的重复值

时间:2012-02-03 12:52:56

标签: php

我想在数组中的所有嵌套数组中找到重复值。 目前,我的阵列就是这样的。

Array $bigarray = Array (
    [431] => Array (
        [0] => orange 
        [1] => apple 
        [2] => pine
    ) 
    [440] => Array ( 
        [0] => orange 
        [1] => lilly 
    ) 
    [444] => Array (  
        [0] => orange 
        [1] => pine 
    ) 
)

我想只提取所有

中的orange
arrays('431','440','444').
你给我一些想法吗? 提前谢谢。

4 个答案:

答案 0 :(得分:10)

您可以使用array_intersect()

$intersected = null;
foreach ($bigarray as $arr) {
  $intersected = $intersected ? array_intersect($arr, $intersected) : $arr;
  if (!$intersected) {
    break; // no reason to continue
  }
}
print_r($intersected);

Array
(
  [0] => orange
)

答案 1 :(得分:2)

$inAllChunks = call_user_func_array('array_intersect',(array_values($bigarray)));
var_dump($inAllChunks);

答案 2 :(得分:1)

$output = null;

foreach ( $bigarray as $array ) {
  if ( is_null($output) ) {
    $output = $array;
    continue;
  }

  $output = array_intersect($output, $array);
  if ( empty($output) ) {
    break;
    // there are no common elements in the array
  }
}

var_dump$(output);

答案 3 :(得分:1)

来自文档。

$array1 = array("a" => "green", "red", "blue");  
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);

http://www.php.net/manual/en/function.array-intersect.php