首页 > 后端开发 > PHP问题 > php 二维数组求交集

php 二维数组求交集

WBOY
发布: 2023-05-07 17:47:08
原创
1054 人浏览过

在PHP编程中,二维数组是经常使用的数据结构之一。二维数组中最常用的操作之一就是求交集。那么,如何在PHP中求二维数组的交集呢?下面我们来看一下具体实现方式。

1.使用 array_intersect 函数

PHP提供了一个内置函数array_intersect(),可以用于求两个数组的交集。该函数可以接受多个数组作为参数,对于二维数组,需要使用array_map函数将关联数组转换为索引数组。

示例代码如下:

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = call_user_func_array('array_intersect', array_map(function($ar){return array_values($ar);},array($arr1, $arr2)));

var_dump($intersect);
登录后复制

输出结果为:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}
登录后复制
登录后复制

2.使用自定义函数

除了内置函数,我们还可以使用自定义函数来实现二维数组求交集的功能。下面是一个简单的实现方式:

/**
 * 求二维数组交集
 * @param $arr1
 * @param $arr2
 * @return array
 */
function arr_intersect($arr1, $arr2){
    $intersect = array();
    foreach($arr1 as $value1){
        foreach($arr2 as $value2){
            if($value1 == $value2){
                $intersect[] = $value1;
                break;
            }
        }
    }
    return $intersect;
}

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = arr_intersect($arr1, $arr2);

var_dump($intersect);
登录后复制

输出结果为:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}
登录后复制
登录后复制

总结

二维数组的求交集操作在PHP编程中是非常常见的。通过使用PHP内置函数array_intersect()或自定义函数,我们可以轻松地实现二维数组的求交集功能。在实际项目中,我们应该根据具体场景选择最优的方式来实现出一个快速可靠的交集算法。

以上是php 二维数组求交集的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板