2012-02-03 3 views
0

Я хотел бы найти дублирующее значение во всех вложенных массивах внутри массива. На данный момент мой массив - это нечто подобное.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'). 

Woudl вы дать мне некоторое представление ...? Спасибо заранее.

ответ

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 
) 
+0

благодаря это именно то, что я хотел !! кстати, я хочу знать, как удалить извлеченные элементы из всех массивов. Я попробовал foreach ($ clauses as $ arr) {.. unset.}, но не повезло. – user973067

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); 
2
$inAllChunks = call_user_func_array('array_intersect',(array_values($bigarray))); 
var_dump($inAllChunks);