我有一個數組數組。 例類似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
我如何才能找到它存在的所有數組中常見的元素?
我有一個數組數組。 例類似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
我如何才能找到它存在的所有數組中常見的元素?
你可以通過
來避免foreach循環call_user_func_array('array_intersect',$a);
看看這裏array-intersect
。 你可以使用這樣的:
$intersect = $a[0];
for ($i = 1; $i < count($a); $i++)
{
$intersect = array_intersect($intersect, $a[$i]);
}
正如它的名字建議,我想你可以只使用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
)
這是我所做的功能。這只是一個多維數組的參考。
<?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)))
如果數組的值與參考陣列相匹配,則返回真。
希望代碼可以幫助你。
感謝您的好評:) – swiftBoy
僅適用於兩個陣列。我需要在多個陣列上。 –
@Vivek,Aha。如何使用循環? –
閱讀手冊http://php.net/manual/en/function.array-intersect.php它可以在你想要的任意數量的陣列上工作。 – vascowhite