专栏首页热爱ITphp将多个值的数组去除重复元素 转

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/>";  
?>

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初窥 Elasticsearch-PHP [1.0]

    Elasticsearch-PHP 下载地址:http://www.thinkphp.cn/code/download/id/1290.html 教程以Th...

    双面人
  • php将二维数组按日期(支持Ymd和Ynj格式日期)排序 转

    // 原始数组 $array = [         [             'date'=>'2019-2-18',         ],   ...

    双面人
  • 验证规则

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • Swift3中的Array内存地址和关联对象的问题

    xferris
  • C++模板

    青木
  • 包学会之浅入浅出Vue.js:升学篇

    上一篇《包学会之浅入浅出Vue.js:开学篇》中,我们初步了解单页面组件这个概念,现在通过一个项目,来进一步解析组件的应用吧。

    蔡述雄
  • 深入剖析 Android中的 ArrayMap

    数据集合在任何一门编程语言中都是很重要的一部分,在 Android 开发中,我们会实用到ArrayList, LinkedList, HashMap等。其中Ha...

    技术小黑屋
  • 快速学习ES6新特性-class(类)的基本语法

    JavaScript 语言的传统方法是通过构造函数定义井生成新对象。ES6中引入了class的概念,通过class关键字自定义类。

    cwl_java
  • 个人经历 | 聊聊我的安全成长之路

    前几天,看到TSRC的小密圈里发起了一个“大神”活动,聊聊初入行时,你心目中/身边的大神,刚看到活动的时候我也去参与了。在这里,重新梳理一下,也借此机会聊聊零基...

    Bypass
  • Python-科学计算-pandas-10-df遍历

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia

扫码关注云+社区

领取腾讯云代金券