我有一个数组数组:
(1, 3), (3, 5, 7), (2, 3, 4), (3, 7, 9)
我需要找到一个出现在所有子数组中的值,在这种情况下,该数字是“3”。
我能找到的最有效的解决方案是 O(n^3),我想知道是否有更有效的方法来实现这一点。
您可以尝试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);