|
要求将二维数组中组合形式重复的键和值去掉,比如array( array(‘a’ => ‘b’), array(‘b’ => ‘a’) ); 为相同组合, 只保留array(‘a’ => ‘b’)。
注意组合与排列是不同的,(a,b)和(b,a)是相同的组合,但是它们是不同的排列。 小技巧: 1、将二维数组转换为一维数组,具体是把二维数组的键和值进行组合,全部存储在一维数组中,如array(‘a’ => ‘b’),我们将键和值转换成形如a-b的字符串 然后,存储在一维数组中,加’-'是为了后面的比较时,可以还原原来的键值对。 2、转换之后,先把重复的字符串去掉,在示例中是’b-d’,它重复了2次,去掉一个。再进行比较。我们的比较思路是这样的,如存储在一维数组中的键值字符串’a-b’,我们将它在转换成’b-a’,然后在一维数组中进行搜索,如果数组中不存在形如’b-a’的字符串,那么说明’a-b’没有重复的组合,然后将’a-b’拆分,按初始数组的形式存储到二维数组中;如果数组中存在形如’b-a’的字符串,并且位于’a-b’字符串之后,那么,说明‘a-b’字符串存在重复的组合,但是我们仍然将其拆分然后存储在二维数组中。这是因为,重复的组合’b-a’位于’a-b’之后,当我们循环处理到字符串’b-a’时,会得到字符串’b-a’也存在重复的字符串组合’a-b’,但是’a-b’再’b-a’之前,我们已经存储过了,因此’b-a’便不再存储,这样也就达到了去掉重复组合的目的。对于重复字符串的位置的比较,是通过它在一维数组中对应的键名来进行的。 完整代码:
Snowy(SnowyAdmin)快速开发平台3.5.1
下载
Snowy(SnowyAdmin)是国内首个国密前后端分离快速开发平台,集成国密加解密插件, 软件层面完全符合等保测评要求,同时实现国产化机型、中间件、数据库适配,是您的不二之选! 技术框架与密码结合,让更多的人认识密码,使用密码;更是让前后分离“密”不可分。采用SpringBoot+MybatisPlus+AntDesignVue+Vite 等更多组件及前沿技术开发,注释丰富,代码简洁,开箱即用
<?php //数组初始化
$array = array(
array(‘a’ => ‘b’),
array(‘a’ => ‘c’),
array(‘a’ => ‘d’),
array(‘b’ => ‘a’),
array(‘b’ => ‘c’),
array(‘b’ => ‘d’),
array(‘b’ => ‘d’),
array(‘c’ => ‘a’),
array(‘d’ => ‘a’),
array(‘d’ => ‘e’)
);
//循环二维数组,得到一维数组
foreach($array as $key=>$value){
foreach($value as $key2=>$value2){
$new[]=$key2.’-’.$value2;
}
}
//去掉一维数组中的重复项
$new=array_unique($new);
//循环一维数组
foreach($new as $key=>$value){
$varr=explode(‘-’,$value);//拆分字符串
$nval=$varr[1].’-’.$varr[0];//重组字符串
$skey=array_search($nval,$new);//在数组中搜索,字符串,如果有返回键名,没有返回false
//注意这里对flase的比较一定要用===,而不能用==,因为特殊的键0,如果用==比较的话也会被认为是false
if($skey===false||$skey>$key){//如果没有重复组合或者重复组合在当前组合之后
$res[][$varr[0]]=$varr[1];//按初始数组的键值对,重新存储
}
}
//打印最后的结果
print_r($res);
?> |
0
0
相关文章
如何在多维数组中高效查找一维数组中的匹配值
如何安全地执行数组中存储的动态 PHP 代码
Laravel 7 中对用户集合进行主排序与自定义 ID 顺序的子排序
如何为每个表单行独立分组多文件上传数据
PHP 文件写入去重:避免重复追加数据的完整解决方案
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。
616
2026.02.13
本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。
194
2026.02.13
本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。
91
2026.02.13
本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。
20
2026.02.13
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
54
2026.02.13
本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。
15
2026.02.12
本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。
598
2026.02.12
本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。
56
2026.02.12
热门下载
最新文章


