2012-06-09 39 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)); 
相关问题