2011-08-07 88 views
0

我有一個數組數組。 例類似PHP數組相交array

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 

我如何才能找到它存在的所有數組中常見的元素?

回答

1

你可以通過

來避免foreach循環
call_user_func_array('array_intersect',$a); 
2

看看這裏array-intersect。 你可以使用這樣的:

$intersect = $a[0]; 
for ($i = 1; $i < count($a); $i++) 
{ 
    $intersect = array_intersect($intersect, $a[$i]); 
} 
+0

僅適用於兩個陣列。我需要在多個陣列上。 –

+0

@Vivek,Aha。如何使用循環? –

+0

閱讀手冊http://php.net/manual/en/function.array-intersect.php它可以在你想要的任意數量的陣列上工作。 – vascowhite

0

正如它的名字建議,我想你可以只使用array-intersect

在這個頁面:

<?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 
) 
4

這是我所做的功能。這只是一個多維數組的參考。

<?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))) 

如果數組的值與參考陣列相匹配,則返回真。

希望代碼可以幫助你。

+0

感謝您的好評:) – swiftBoy