首页 > 技术文章 > 二维数组去重

sgm4231 2018-10-11 11:41 原文

<?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 = [
    ['name' => '张三', 'age' => 18],
    ['name' => 'Tom', 'age' => 19],
    ['name' => 'Tom', 'age' => 19],
    ['name' => '张三', 'age' => 50],
    ['name' => '王小二', 'age' => 30],
];
echo "<pre>";
print_r(more_array_unique($arr));


注:

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

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

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

推荐阅读