zoukankan      html  css  js  c++  java
  • PHP二维数组去重(指定键名)

      本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐。

      本文以二维数组去重为引,介绍array_column函数的三种用法。

    以下是本人常用的去重方法:

     以指定字段为索引,自然会把索引字段中重复的值覆盖掉, 然后在去除关联索引就可以了

    //array_column第一种用法,以指定字段为索引
    $data
    = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 125, 'name' => '赵六'), array('id' => 126, 'name' => '赵六') );

     

    上述是一个二维数组,我们需要把相同 id 的记录去掉,即一个ID只保留一条记录;只使用第三个参数试验,

    $data = array_column($data, NULL, 'id');   //以ID为索引
    $data = array_values($data);         //去除关联索引

    OK,去重完成,此时$data数据如下:五条记录变为四条

    $data= array(
    
    array('id' => 123, 'name' => '张三'),
    
    array('id' => 124, 'name' => '王五'),
    
    array('id' => 125, 'name' => '赵六'),
    
    array('id' => 126, 'name' => '赵六')
    
    );

    另外,讲下第二个参数,代表需要保留的(单)列,下面我们将使用第二个参数,而不使用第三个参数。

    array_column第二种用法:

    $data = array_column($data, 'name');

    此时二维数组只保留 name 字段,id字段被删除,数据如下:

    $data= array(
    
    array('name' => '张三'),
    
    array('name' => '李四'),
    
    array('name' => '王五'),
    
    array('name' => '赵六'),
    
    array('name' => '赵六')
    
    );

     array_column的第三种用法,

     三个参数全部使用: 用来构造 'id' => 'name' 形式的数据

    $data = array_column($data, 'name', 'id');

    此时数据如下:此时ID重复的也被剔除了,前面的被覆盖。

    $data = array(
        '123' => '李四',
        '124' => '王五',
        '125' => '赵六',
        '126' => '赵六'
    );

    see you ~

     

  • 相关阅读:
    C#语法相比其它语言比较独特的地方
    Git源码管理工具使用
    2018年第九届蓝桥杯题目(C/C++B组)汇总
    Unity插件系列之二维码
    在本机使用虚拟机安装一个linux系统,并搭建ftp服务器
    用UE4蓝图制作FPS_零基础学虚幻4第二季
    【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)
    Drag(拖拽)和Move(移动)两个脚本
    解决:Word在试图打开文件时遇到错误
    2018年的一些记录,共勉
  • 原文地址:https://www.cnblogs.com/lz0925/p/10727995.html
Copyright © 2011-2022 走看看