Rumah >pengaturcaraan harian >pengetahuan PHP >PHP怎么删除二维数组中的重复元素?(图文+视频)

PHP怎么删除二维数组中的重复元素?(图文+视频)

藏色散人
藏色散人asal
2018-10-10 13:58:115676semak imbas

本篇文章主要给大家介绍PHP删除二维数组中重复元素的具体实现方法!

在之前的文章【PHP怎么删除数组中重复元素?】中已经为大家介绍过PHP删除普通一维数组的方法,需要的朋友可以先参考学习下。

简单的说,二维数组也就是数组的数组,你需要两个索引来选取元素。

下面我们通过具体的代码示例,为大家详细介绍删除二维数组中重复元素的方法!

<?php
/**
 * PHP删除二维数组中的重复元素
 */

// 对二维数组进行去重复
function more_array_unique($arr)
{
    //先把二维数组中的内层数组的键值记录在在一维数组中
    foreach ($arr[0] as $k => $v) {
        $arr_inner_key[] = $k;
    }
    foreach ($arr as $k => $v) {
        //降维 用implode()也行
        $v = join(",", $v);
        //保留原来的键值 $temp[]即为不保留原来键值
        $temp[$k] = $v;
    }
    //去重:去掉重复的元素
    $temp = array_unique($temp);
    foreach ($temp as $k => $v) {
        //拆分后的重组 如:Array( [0] => 张三 [1] => 18 )
        $a = explode(",", $v);
        //将原来的键与值重新合并
        $arr_after[$k] = array_combine($arr_inner_key, $a);
    }
    return $arr_after;
}

$arr = [
    [&#39;name&#39; => &#39;张三&#39;, &#39;age&#39; => 18],
    [&#39;name&#39; => &#39;Tom&#39;, &#39;age&#39; => 19],
    [&#39;name&#39; => &#39;Tom&#39;, &#39;age&#39; => 19],
    [&#39;name&#39; => &#39;张三&#39;, &#39;age&#39; => 50],
    [&#39;name&#39; => &#39;王小二&#39;, &#39;age&#39; => 30],
];
echo "<pre class="brush:php;toolbar:false">";
print_r(more_array_unique($arr));

在此段代码中,我们定义了一个$arr的二维数组,其中有两对重复元素,“张三”和“Tom”,但是他们的年龄有所不同。

大家应该都知道array_unique()函数只适用于一维数组,那么二维数组就需要我们自己定义一个函数方法,不过也可以用到array_unique()函数。

如上述代码示例中,我们定义了more_array_unique的方法,用来实现删除二维数组中重复元素。

注:

join函数是该函数的别名:implode()。

array_combine函数:表示创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值   

array_unique 函数:移除数组中重复的值。

最终通过浏览器访问,删除二维数组重复元素结果如下图:

ee63ace8c6221c5c54d3dc9a8f08643.png

如图所示,我们通过自定义的more_array_unique方法,将二维数组中完全重复的元素去除掉,并且保留了有用的信息。

本篇文章就是关于PHP删除二维数组中的重复元素的具体方法介绍,希望对需要的朋友有所帮助!

想要了解更多PHP知识,大家可以关注PHP中文网PHP视频教程,欢迎大家参考学习!

Atas ialah kandungan terperinci PHP怎么删除二维数组中的重复元素?(图文+视频). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn