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

絕刀狂花
发布: 2025-12-14 23:07:32
原创
937人浏览过
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进行去重。

立即学习PHP免费学习笔记(深入)”;

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

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

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

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

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

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

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

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

Musho
Musho

AI网页设计Figma插件

Musho 76
查看详情 Musho

三、使用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组合法【技巧】的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号