美文网首页
PHP数组降维去重

PHP数组降维去重

作者: 铁匠简记 | 来源:发表于2018-07-12 15:53 被阅读34次

工作遇到一个问题,需要给二维数组去重,便想到了array_unique(),然而使用后发现报错,查看手册才明白本函数只适用于一维数组,那二位数组呢?查看了下手册没找到;只能自己动手编写了:

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

原理还是一样的,遇到更高维了,可以先调用低维函数转换。把解决不了的问题,转化成为我们可以解决的问题

相关文章

网友评论

      本文标题:PHP数组降维去重

      本文链接:https://www.haomeiwen.com/subject/wzkrpftx.html