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' => '赵六'
);

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!