美文网首页
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