首页 > 编程语言 >php二维数组中将有交集的并在一起

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

时间:2023-05-27 14:55:53浏览次数:47  
标签:arr 交集 二维 result 数组 array php merged subArr

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"
  ]
]

标签:arr,交集,二维,result,数组,array,php,merged,subArr
From: https://www.cnblogs.com/pine007/p/17436727.html

相关文章

  • php如何输出二维数组,PHP中以不同形式的输出遍历二维数组 方法
    $arr=array(array("101","李军","男","1976-02-20","95033"),array("103","陆君","男","1974-06-03","95031"),array("105","匡明","男","......
  • 【web 开发】PHP中的类和对象的理解
    前言面向对象编程的主要优势就是把编程的重心从处理过程转移到了对现实世界实体的表达。这十分符合人们的思维方式和逻辑类(classes)和对象(objects)并不难理解。试想一下,在日常生活中,自然人对事物的认识,一般是由看到的、感受到的实体(比如日常生活中的衣食住行)归纳出来的,或者抽象出它们......
  • 宿主机套用 docker 容器中安装 PHP 的开发环境
    docker可以把运行环境整体打包,但是在开发时,IDE往往还要指定宿主机上的PHP可执行文件,这样,安装php扩展时,要装两遍,比较麻烦.如果在宿主机上运行容器中的命令?可以借助dockerexec-it<container_name><command><args>命令,写个名为php的shell脚本,里面写入这行代......
  • 函数传递二维数组方法
    二维数组这样定义的时候:intx[n][m]感觉就不再是一个真正意义上的数组了,因为没有办法通过头指针进行访问,传递的时候编译器报错没有这个函数,直接找不到了。一种新的定义方式int**x=newint*[n];for(inti=0;i<n;++i)x[i]=newint[m];这样的话,就按定义一维数组的方......
  • PHP Amqp 封装类
    1<?php23/**4*使用示例5#定义名称6define('ExchangeName','exchange_name_15');7define('QueueName','queue_name_15');8define('RoutingKey','routing_key_15');91......
  • PHP 反射机制打印对象
    1<?php2/**34echoObj::new('Redis');5echoObj::new('Redis')->method('set')?->isPublic();67*/89classObjextendsReflectionClass10{11publicstaticfunctionstd(?array$attrs=null)1......
  • js调用摄像头拍照及扫描二维码
    注:js调用摄像头需要localhost域或者https,否则会报无权限一引用jsGithub:https://github.com/mebjas/html5-qrcode<scriptsrc="html5-qrcode.min.js?v=2"></script>二html页面<!DOCTYPEhtml><html><head><title>Instascan</titl......
  • Graphpad Prism9.5.1 科学绘图软件 下载安装教程(含Win/Mac)
    软件下载AutodeskFlame2024formac软件介绍AutodeskFlame破解版由是Autodesk公司(译作欧特克)开发的一款高端电影剪辑和特效制作系统。Flame是用于高速合成、高级图形和客户驱动的交互设计的终极视觉特效制作系统。AutodeskFlame提供出色的性能和荣获奥斯卡奖的工具。从......
  • php语言开发宝塔部署thinkphp考试平台管理系统
    技术架构PHP7.2+Thinkphp6+React+UmiJs+nginx+mysql5.7cnetos7以上+宝塔面板搭建教程1.下载源码,宝塔添加一个站点,PHP版本选择7.2。2.压缩codes后台代码目录,上传后台代码到宝塔的网站根目录当中解压缩,关闭防跨站,运行目录指向public,伪静态选择thinkphp,设置为:locat......
  • PHP中的AMQP类
    PHP中的AMQP类标签(空格分隔):php,amqp官网地址:http://docs.php.net/manual/da/book.amqp.phpAMQPConnectionAMQPConnection{/*Methods*///与AMQP代理建立连接publicboolconnect(void)//构造函数$credentials可以理解为配置项的数组//$co......