php怎么快速比对两个数组中存在的相同的值

题目描述

拿到两个数组,第一个数组是$arr1

    array(8) {
        [0]=>
        string(5) "10001"
        [1]=>
        string(5) "10008"
        [2]=>
        string(5) "10010"
        [3]=>
        string(5) "10100"
        [4]=>
        string(5) "10020"
        [5]=>
        string(5) "10110"
        [6]=>
        string(5) "10410"
        [7]=>
        string(5) "10000"
      }

第二个数组是$arr2

        array(4) {
            [0]=>
            string(5) "10000"
            [1]=>
            string(5) "10003"
            [2]=>
            string(5) "10004"
            [3]=>
            string(5) "10006"
          }

想请问怎么快速得出arr2中存在于arr1的内容。

题目来源及自己的思路

arr1中可能存在10000到20000多个数组,而arr2中只会存在少数的数组。
我现在尝试了先把arr1转换成字符串得出
$str1=implode(',',$arr1);

string(8)'10001','10008','10010','10100','10020','10110','10410','10000'

$str2=implode(',',$arr2);

string(4)'10000','10003','10004','10006'

然后计算arr2的长度 $arr2

$longth2=count($arr2);

for($i=0;$i<$longth2;$i++){

}

但是不知道接下来怎么比对结果了。

想得到的结果是

$arr2中每一个元素存在在$arr1中的位置,数量只会出现一次,没思路了,求教!谢谢

阅读 4.6k
6 个回答
array_intersect()  // 比较数组,返回数组的交集(只比较键值)
array_intersect_assoc()  // 比较数组,返回数组的交集(比较键值和键名)
array_intersect_key() // 比较数组,返回数组的交集(只比较键名)

array_intersect

使用函数array_intersect函数

例子:

$a1 = [1,2,3,4,5,6,7,8,9];
$a2 = [3,6];
$r = array_intersect($a1, $a2);
得到的$r = [2 => 3, 5 => 6]; 保留了在$a1中键值
array_intersect()

array_intersect()

array_intersect — 计算数组的交集
array array_intersect ( array $array1 , array $array2 [, array $... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题