PHP пересечение массива массива - PullRequest
0 голосов
/ 07 августа 2011

У меня есть массив массивов.Пример типа

a[0]={1,2,3};
a[1]={2,3,4};
**Edit** in a[2] from a[2]={4,5};
a[2]={2,4,5};
and more 

Как найти общий элемент, который существует во всем массиве?

Ответы [ 4 ]

4 голосов
/ 14 декабря 2012

Это функция, которую я сделал.Это просто ссылка для многомерного массива.

<?php
$array1 = array('angka'=>12,'satu','2'=>'dua','tiga'=>array('dua','enam','empat'=>array('satu','lima',12)));//object
$array2 = array('dua','tiga','empat',12);//object as intersect refference

function intersect($data=NULL)
{
    if(!empty($data))
    {
        $crashed = array();
        $crashed2 = array();
        foreach($data[0] as $key=>$val)
        {
            if(!is_array($val))
            {
                $crashed[$key] = in_array($val,$data[1]);//return true if crashed (intersect)
            }
            else
            {
                $crashed2[$key] = intersect(array($val,$data[1]));
            }
            $crashed = array_merge($crashed,$crashed2);
        }
    }
    return $crashed;
}
$intersect = intersect(array($array1,$array2));
print_r($intersect);
?>

Возвращает такой результат:

Array ( [angka] => 1 [0] => [1] => 1 [tiga] => Array ( [0] => 1 [1] => [empat] => Array ( [0] => [1] => [2] => 1 ) ) ) 

Возвращает true, если значение массива совпадает со ссылочным массивом.

Надеюсь, код поможет вам.

2 голосов
/ 07 августа 2011

Посмотрите здесь array-intersect.Вы можете использовать это так:

$intersect = $a[0];
for ($i = 1; $i < count($a); $i++)
{
    $intersect = array_intersect($intersect, $a[$i]);
}
1 голос
/ 07 августа 2011

Вы можете избежать цикла foreach с помощью

call_user_func_array('array_intersect',$a);
0 голосов
/ 07 августа 2011

Как следует из названия, я думаю, вы можете просто использовать массив-пересечение

С этой страницы:

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

дает

Array
(
    [a] => green
    [0] => red
)
...