查找出现在所有给定数组中的元素

时间:2012-09-24 09:23:35

标签: php arrays sorting

我有一个数组数组:

(1, 3), (3, 5, 7), (2, 3, 4), (3, 7, 9)

我需要找到一个出现在所有子数组中的值, 在这种情况下,该数字是“3”。

我能找到的最有效的解决方案是O(n ^ 3),我想知道是否有更有效的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用array_intersect

$output = array_intersect($array1, $array2, $array3, ...);

或更自动:

$input  = array( array(1, 3), array(3, 5, 7), array(2, 3, 4), array(3, 7, 9) );
$output = $input[0];

foreach ( $input as $key => $subarray ) {
  if ( $key == 0 ) {
    continue;
  }

  $output = array_intersect($output, $subarray);
  if ( empty($output) ) {
    break;
  }
}

var_dump($output);