php二维数组中将有交集的并在一起

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php二维数组中将有交集的并在一起相关的知识,希望对你有一定的参考价值。

1、需求

  • 将下方数组$arr格式化为 [[A,B,C,D,E,F], [X,Y,Z]]

2、编码

$arr = [
    [\'A\', \'B\'],
    [\'A\', \'C\'],
    [\'A\', \'D\'],
    [\'C\', \'E\'],
    [\'D\', \'F\'],
    [\'X\', \'Y\'],
    [\'X\', \'Z\']
];

$result = array();
foreach ($arr as $subArr) 
    $merged = false;
    foreach ($result as &$r) 
        if (array_intersect($r, $subArr)) 
            $r = array_unique(array_merge($r, $subArr));
            $merged = true;
            break;
        
    
    if (!$merged) 
        $result[] = $subArr;
    


print_r($result);

3、输出结果

 [
  0 => [
    0 => "A"
    1 => "B"
    2 => "C"
    3 => "D"
    4 => "E"
    6 => "F"
  ]
  1 => [
    0 => "X"
    1 => "Y"
    3 => "Z"
  ]
]

PHP 两个二维数组求交集

思路,循环其中一个数组,然后使用in_array() 函数,判断被循环数组的每个元素是否在另外一个数组中即可

   代码如下:

    

 $out_arr = array(); //交集或者是不重复的数组
        if(!empty($res_repeat)){
            //Wipe off the mac that in the mac_array
            foreach($mac_array as $key=>$item){
                if(!in_array(array("mac_addr"=>$item),$res_repeat)){
                    $out_arr[]=$item;
                }
            }
        }else{
            $out_arr = $mac_array;
        }

  只需要输出$out_arr即可

  

以上是关于php二维数组中将有交集的并在一起的主要内容,如果未能解决你的问题,请参考以下文章

ES6数组:两个数组或数组对象取并集、交集、差集

php 一个二维数组求二维数组内的并集

asp.net两个数组的并集

用linq做数组取并集

PHP 两个二维数组求交集

Django中数组的并集和交集