两组二维数组,如何快速找出差集元素

$arr1 = [
    ['number' => '1001', 'empno' => '9991','title'=>'财务'],
    ['number' => '1001', 'empno' => '9992','title'=>'财务'],
    ['number' => '1002', 'empno' => '9991','title'=>'财务'],
    ['number' => '1002', 'empno' => '9992','title'=>'财务'],
    ['number' => '1001', 'empno' => '9990','title'=>'财务']
];
$arr2 = [
    ['number' => '1001', 'empno' => '9991','title'=>'财务'],
    ['number' => '1001', 'empno' => '9992','title'=>'财务'],
    ['number' => '1002', 'empno' => '9991','title'=>'财务'],
    ['number' => '1002', 'empno' => '9992','title'=>'财务']
];

如有以上两组数组,就如唯一键值一样,number与empno不能出现同一组为重复的数组,以上$arr1,最后一位元素为差集元素(['number' => '1001', 'empno' => '9990','title'=>'财务']),就是不相同的元素。请问怎么用除了套用两个foreach外快速的查找出来呢

阅读 2.2k
1 个回答
$arr3 = array_filter($arr1, function ($v) use ($arr2) {
  return !in_array($v, $arr2);
});

最简单的写法
不过这个写法有个缺陷只能找到$arr1中不包含$arr2的项,要找出2个数组差集得再封装一下

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