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

admin 百科 14
PHP二维数组去重需用特殊方法:一、serialize+array_unique+unserialize;二、json_encode+索引数组判断;三、array_column+array_unique+array_intersect_key(需唯一键);四、usort+相邻比较(会改变顺序)。

php怎么删除二维数组重复值_php二维数组去重array_map与array_unique组合法【技巧】-第1张图片-佛山资讯网

如果您需要对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对对象或资源的依赖问题

标签: php js json 编码 回调函数 字符串数组 排列

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~