2012-06-09 35 views
-2

是否有任何功能可以執行array_diff()的逆操作?任何獲得兩個數組共同元素的函數?

我的意思是,如果我有:

array(1,2,3) 
array(3,4,5) 

我想這個函數返回array(3),或直接3

注意:array_intersect()不適合我。

哈維爾

+0

爲什麼不呢? 'array_intersect()'完全是你想要的。 –

+4

如果沒有任何詳細的評論,留下一段說明「完全符合我所需的功能並不適合我的功能」的說明並不完全是尋求幫助的正確方法。 –

+0

除了你提供的內容,'array_intersect()'確實有效:http://codepad.org/8uis96MM粘貼中有兩個版本。 – tigrang

回答

3

的交點如果array_intersect() doesn't fit me是因爲它返回:

Array 
(
    [2] => 3 
) 

而不是:

Array 
(
    [0] => 3 
) 

3

然後,你可以很容易地在陣列轉化爲可行的東西與array_values()

<?php 
$arr1 = array(1,2,3); 
$arr2 = array(3,4,5); 

$new = array_values(array_intersect($arr1,$arr2)); 
$new = $new[0]; 
print_r($new); //3 
?> 

否則,請解釋一下你的情況。

0

嘗試array_intersect()這將計算陣列

+0

OP不希望array_intersect。閱讀問題。 –

0

既然你不想使用array_intersect(),檢查此低效的方法:

$arr1= array(1,2,3); 
$arr2= array(3,4,5); 

function arr_intersect($array1, $array2) 
{ 
    $array_result=array(); 
    $array_shared = array_diff($array1+$array2, array_diff($array1, $array2)); 
    $count=count($array_shared); 

    return array_values($array_shared); 
} 

print_r(arr_intersect($arr1, $arr2)); 
相關問題