php 去除二维数组重复

在 PHP 中,我们常常需要对数组进行处理和操作。有时候,我们需要去除数组中的重复元素,这里介绍一种针对二维数组的去重方法。

以下是列举一些常见的方法:

方法一:使用 array_map 和 serialize 函数

array_map 函数可以对数组中的每个元素应用一个回调函数,该回调函数返回一个新元素。我们可以使用 serialize 函数将每个元素进行序列化,然后利用 PHP 的 array_unique 函数对序列化后的元素进行去重,最后再将序列化后的元素反序列化为原元素。

示例代码:

php 复制代码
function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", $array)));
}
// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);
// 执行去重操作
$result = uniqueArray($data);
// 输出结果
print_r($result);

输出结果:

php 复制代码
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)

上述代码中,我们首先定义了一个 uniqueArray 函数,该函数利用 array_map 函数将数组中的每个元素序列化,然后利用 array_unique 函数对序列化后的元素进行去重,最后再将序列化后的元素利用 unserialize 函数反序列化为原元素。

方法二:使用 array_reduce 函数和 array_merge 函数

除了使用 array_map 函数和 serialize 函数之外,我们还可以使用 array_reduce 函数和 array_merge 函数,将二维数组中的元素进行扁平化处理,形成一维数组,然后再使用 array_unique 函数对一维数组进行去重操作,最后再利用 array_map 函数将一维数组转换回二维数组。

示例代码:

php 复制代码
function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", array_reduce($array, "array_merge", array()))));
}
// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);
// 执行去重操作
$result = uniqueArray($data);
// 输出结果
print_r($result);

输出结果:

php 复制代码
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)

上面的代码中,我们首先定义了一个 uniqueArray 函数,该函数利用 array_reduce 函数和 array_merge 函数将二维数组中的元素进行扁平化处理,形成一维数组,然后利用 array_map 函数将一维数组中的元素序列化、去重、反序列化,最后再将一维数组转换回二维数组。

总结:

上述两种方法均可以对二维数组进行去重操作,但是方法一利用了序列化的方式,可以在进行去重操作时保留原始数据的类型,而方法二则需要将二维数组中的元素进行扁平化处理,然后再将一维数组转换回二维数组。选用哪种方法,可以根据实际需要和数据量大小进行选择。

相关推荐
檀越剑指大厂7 分钟前
容器化 Android 开发效率:cpolar 内网穿透服务优化远程协作流程
android
冲鸭ONE8 分钟前
JAVA多线程概述及应用
java
Despacito0o11 分钟前
C语言基础:变量与进制详解
java·c语言·开发语言
nightunderblackcat32 分钟前
进阶向:人物关系三元组,解锁人物关系网络的钥匙
开发语言·python·开源·php
MrSYJ1 小时前
UserDetailService是在什么环节生效的,为什么自定义之后就能被识别
java·spring boot·后端
MiyamuraMiyako1 小时前
从 0 到发布:Gradle 插件双平台(MavenCentral + Plugin Portal)发布记录与避坑
android
NRatel2 小时前
Unity 游戏提升 Android TargetVersion 相关记录
android·游戏·unity·提升版本
long3162 小时前
构建者设计模式 Builder
java·后端·学习·设计模式
吐个泡泡v2 小时前
Maven 核心命令详解:compile、exec:java、package 与 IDE Reload 机制深度解析
java·ide·maven·mvn compile
天上掉下来个程小白2 小时前
微服务-01.导入黑马商城
java·微服务·架构