新闻中心

php怎么删除二维数组重复值_php二维数组去重array_map与array_unique组合法【技巧】

2025-12-14
浏览次数:
返回列表
PHP二维数组去重需用特殊方法:一、serialize+array_unique+unserialize;二、json_encode+索引数组判断;三、array_column+array_unique+array_intersect_key(需唯一键);四、usort+相邻比较(会改变顺序)。

php怎么删除二维数组重复值_php二维数组去重array_map与array_unique组合法【技巧】

如果您需要对PHP中的二维数组进行去重操作,直接使用array_unique无法生效,因为其默认只支持一维数组的值比较。以下是几种可行的实现方法:

一、使用array_map与array_unique组合法

该方法通过将二维数组的每一项序列化为字符串,再用array_unique去重,最后反序列化还原结构。此方式利用了array_unique对字符串值的有效识别能力。

1、使用array_map将二维数组的每个子数组通过serialize函数转换为字符串。

2、对生成的字符串数组调用array_unique进行去重。

3、再次使用array_map配合unserialize将去重后的字符串还原为原始二维数组结构。

4、注意确保子数组中不包含不可序列化的资源类型或闭包,否则会触发警告。必须确保所有键名和值均可被serialize安全处理

二、使用循环遍历+in_array判断法

该方法通过逐个提取子数组,并在新数组中检查是否已存在相同结构的子数组,从而实现去重。适用于数据量不大且需严格保持原始顺序的场景。

1、初始化一个空数组用于存放去重后的结果。

2、遍历原始二维数组,对每个子数组使用json_encode编码为唯一字符串。

3、将编码后的字符串存入临时索引数组,同时检查该字符串是否已在索引数组中存在。

4、若不存在,则将当前子数组追加到结果数组,并将该字符串加入索引数组。使用json_encode可避免serialize对对象或资源的依赖问题

站酷梦笔 站酷梦笔

国内知名设计社区站酷推出的AI插画生成工具

站酷梦笔 170 查看详情 站酷梦笔

三、使用array_column与array_intersect_key组合法

该方法适用于具有明确唯一标识字段(如'id')的二维数组,通过提取该字段值并去重,再根据去重后的键重新筛选原数组。

1、使用array_column提取指定键(例如'id')的所有值形成一维数组。

2、对该一维数组执行array_unique获取去重后的值列表。

3、使用array_flip将去重后的值转为键,再用array_intersect_key筛选原始二维数组对应键位置的元素。

4、注意该方法仅适用于存在天然唯一键字段的场景,若无固定唯一键则无法准确保留首次出现的完整子数组

四、使用自定义比较函数配合usort与相邻比较法

该方法先对二维数组按子数组内容排序,再遍历比较相邻两项是否完全一致,跳过重复项。适合需要深度比较且子数组结构较复杂的情况。

1、使用usort配合自定义回调函数,对二维数组按子数组的json_encode结果升序排列。

2、初始化结果数组,并将排序后首项直接加入。

3、从第二项开始循环,每次将当前项与前一项的json_encode结果进行字符串比较。

4、若不相等,则将当前项加入结果数组;否则忽略。排序步骤会改变原始索引顺序,需确认是否允许顺序变动

以上就是php怎么删除二维数组重复值_php二维数组去重array_map与array_unique组合法【技巧】的详细内容,更多请关注其它相关文章!


# 做一个  # 外贸推广营销方案优点  # 大数据seo获客  # seo公司搜10火星  # 上海市建设委网站  # 营销推广项目推广价格  # seo可以转运营吗  # 河源定制网站建设制作  # 孟村seo优化哪家强  # 没有网站如何做百度推广  # 泉州做网站优化价格  # 工作岗位  # 若不  # 再用  # php  # 一键  # 转换为  # 适用于  # 遍历  # 自定义  # 回调  # 排列  # 字符串数组  # 回调函数  # 编码  # json  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  qq游戏跨平台入口_qq游戏多设备同步登录  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  Golang如何使用context实现超时取消_Golang context超时取消模式实践  邮政快递单号查询入口 邮政快递物流信息在线查询入口  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  Go语言中动态执行代码字符串的策略与实践  在Socket.IO连接中实现Access Token自动更新与动态重连  漫蛙官网正版漫画入口 漫蛙2官方网页登录地址  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  处理嵌套交互式控件:前端可访问性指南  动漫岛观看全网网 动漫岛在线正版动漫入口  铁路12306官网网页端快速入口 铁路12306官方首页登录教程  Python自定义类排序:解决lambda键值访问TypeError的实践指南  如何有效阻止外部脚本意外修改内联样式的高度属性  j*a toString()的覆盖  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理  Python大型XML文件高效流式解析教程  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法  NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  C++指针和引用有什么区别_C++内存管理核心概念深度解析  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  如何更改在 Excel 中打开超链接时的默认浏览器  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  顺丰快件物流信息 官方网站查询入口  在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  fishbowl官网免费版 fishbowl养鱼网站入口  AO3镜像入口大全 AO3网页版内容访问全集  在VS Code中配置和运行Dart程序的完整步骤  知音漫客正版漫画平台_知音漫客官网账号登录  蛙漫安全无毒 官方认证的绿色入口  如何在Promise链中有效终止错误处理后的执行  PDF文件体积过大处理_PDF压缩技巧详解  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  qq音乐在线播放入口_qq音乐电脑版登录链接  解决Python logging 中 datefmt 导致时间戳固定不变的问题  c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法 

搜索