在PHP编程中,二维数组是经常使用的数据结构之一。二维数组中最常用的操作之一就是求交集。那么,如何在PHP中求二维数组的交集呢?下面我们来看一下具体实现方式。
1.使用 array_intersect 函数
PHP提供了一个内置函数array_intersect(),可以用于求两个数组的交集。该函数可以接受多个数组作为参数,对于二维数组,需要使用array_map函数将关联数组转换为索引数组。
示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$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);
输出结果为:
1
2
3
4
5
6
7
8
9
array(1) {
[0]=>
array(2) {
[“id”]=>
int(2)
[“name”]=>
string(4) “Jack”
}
}
2.使用自定义函数
除了内置函数,我们还可以使用自定义函数来实现二维数组求交集的功能。下面是一个简单的实现方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* 求二维数组交集
* @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);
输出结果为:
1
2
3
4
5
6
7
8
9
array(1) {
[0]=>
array(2) {
[“id”]=>
int(2)
[“name”]=>
string(4) “Jack”
}
}
总结
二维数组的求交集操作在PHP编程中是非常常见的。通过使用PHP内置函数array_intersect()或自定义函数,我们可以轻松地实现二维数组的求交集功能。在实际项目中,我们应该根据具体场景选择最优的方式来实现出一个快速可靠的交集算法。
以上就是php 二维数组求交集的详细内容,更多请关注php中文网其它相关文章!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有佣金分成!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.77ym.top",如遇到无法解压的请联系管理员!
7. 本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
暂无评论内容