zoukankan      html  css  js  c++  java
  • php去除数组中重复值,并返回结果!

    array_unique(array) 只能处理value只有单个的数组。

    去除有多个value数组,可以使用如下函数实现:

    复制代码
    function more_array_unique($arr=array()){  
        foreach($arr[0] as $k => $v){  
            $arr_inner_key[]= $k;   //先把二维数组中的内层数组的键值记录在在一维数组中  
        }  
        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);  //将原来的键与值重新合并  
        }  
        return $arr_after;  
    }  
    复制代码

    有如下数组:

    复制代码
     $arr = array(  
              '0'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ),  
              '1'=>array(  
                       'name'=>'susu',  
                       'age'=>26,  
                       ),  
               '2'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ),  
               'new'=>array(  
                       'name'=>'kube',  
                       'age'=>37,  
                       ),  
               'list'=>array(  
                       'name'=>'kube',  
                       'age'=>27,  
                       ),  
               '435'=>array(  
                       'name'=>'susu',  
                       'age'=>26,  
                       ),
                '33'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ), 
               ); 
    复制代码

    调用函数后显示:

    复制代码
    Array
    (
        [0] => Array
            (
                [name] => james
                [age] => 30
            )
    
        [1] => Array
            (
                [name] => susu
                [age] => 26
            )
    
        [new] => Array
            (
                [name] => kube
                [age] => 37
            )
    
        [list] => Array
            (
                [name] => kube
                [age] => 27
            )
    
    )
    复制代码

    测试Demo如下:

    复制代码
    <?php
     $arr = array(  
              '0'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ),  
              '1'=>array(  
                       'name'=>'susu',  
                       'age'=>26,  
                       ),  
               '2'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ),  
               'new'=>array(  
                       'name'=>'kube',  
                       'age'=>37,  
                       ),  
               'list'=>array(  
                       'name'=>'kube',  
                       'age'=>27,  
                       ),  
               '435'=>array(  
                       'name'=>'susu',  
                       'age'=>26,  
                       ),
                '33'=>array(  
                       'name'=>'james',  
                       'age'=>30,  
                       ), 
               );  
    printf("原来的数组:<br><pre>");   //输出原来的数组  
    print_r($arr);  
    echo "</pre><br/>";   
    
    
    
    function more_array_unique($arr=array()){  
        foreach($arr[0] as $k => $v){  
            $arr_inner_key[]= $k;   //先把二维数组中的内层数组的键值记录在在一维数组中  
        }  
        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);  //将原来的键与值重新合并  
        }  
        return $arr_after;  
    }  
    
    
    
        $arr_new = more_array_unique($arr);  //调用去重函数  
        printf("去除重复元素后的数组:<br>");  
        
        echo '<pre>';
        print_r($arr_new);  
        echo "</pre><br/>";  
    ?>
    复制代码
  • 相关阅读:
    单表清除重复数据
    调用webApi封装
    简单写入本地日志,日志文件位置与主程序exe位置相同
    APPConfig.XML获取配置文件(主程序和Dll各自的)
    获取当前运行程序上一级目录指定文件夹,没有就创建文件夹
    shell脚本中的单引号和双引号以及反引号详解
    Linux shell中反引号(`)的应用
    关于网页 硬解 软解 H264 HEVC 和你电脑起飞了那点事
    浏览器支持H.265解码总结
    微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)
  • 原文地址:https://www.cnblogs.com/lienen/p/9330388.html
Copyright © 2011-2022 走看看