19

我有两个带有一些用户 ID 的数组

$array1 = array("5","26","38","42");

$array2 = array("15","36","38","42");

我需要的是,我需要数组中的公共值如下

$array3 = array(0=>"38", 1=>"42");

我试过了array_intersect()。我想获得一种执行时间最短的方法。请帮助我,朋友们。

4

4 回答 4

35

原生 PHP 函数比尝试构建自己的算法更快。

$result = array_intersect($array1, $array2);
于 2013-07-15T07:35:59.037 回答
3

使用这个,虽然这可能是一个很长的方法:

$array1 = array("5","26","38","42");

$array2 = array("15","36","38","42");

$final_array = array();

foreach($array1 as $key=>$val){
    if(in_array($val,$array2)){
        $final_array[] = $val;
    }
}

print_r($final_array);

结果:数组( [0] => 38 [1] => 42 )

于 2013-07-15T07:37:21.750 回答
0

我认为你不需要习惯$key=>$value你的问题,所以检查这个答案:

<?php
$array1 = array("5", "26", "38", "42");
$array2 = array("15", "36", "38", "42");

foreach ($array1 as $value) {
    if (in_array($value, $array2)) {
        $array3[] = $value;
    }
}

print_r($array3);
?>
于 2013-07-15T07:39:59.983 回答
0

array_intersect() 工作得很好。

数组 array_intersect ( 数组 $array1 , 数组 $array2 [, 数组 $ ... ] )

$array1 = array("5","26","38","42");

$array2 = array("15","36","38","42");

echo array_intersect($array1, $array2);

http://fr2.php.net/array_intersect

于 2013-07-15T07:48:58.687 回答