php 二维数组求交集

在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中文网其它相关文章!

TG交流群(点击进入)----付费帮助搭建---修复---二开,以及发布求资源.
QQ交流群 922260178
© 版权声明
THE END
喜欢就支持一下吧
点赞1.2W+ 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容