前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP基于array_unique实现二维数组去重

PHP基于array_unique实现二维数组去重

作者头像
砸漏
发布2020-11-02 10:51:08
2K0
发布2020-11-02 10:51:08
举报
文章被收录于专栏:恩蓝脚本

array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

一维数组的重复项:

使用array_unique函数即可,使用实例如下:

代码如下

代码语言:javascript
复制
<?php
$aa = array("apple", "banana", "pear", "apple", "wail", "watermalon");
$bb = array_unique($aa);
print_r($bb);
? 

结果如下:

Array ( [0] = apple [1] = banana [2] = pear [4] = wail [5] = watermalon )

二维数组去重项

代码如下

例如:

$result = array( 0= array(‘a’= 1,’b’= ‘Hello’), 1= array(‘a’= 1,’b’= ‘other’), 2= array(‘a’= 1,’b’= ‘other’), );

处理成

$result = array( 0= array(‘a’= 1,’b’= ‘Hello’), 1= array(‘a’= 1,’b’= ‘other’) );

使用方法

array_unique($result, SORT_REGULAR);

二维数组的重复项:

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

PHP代码如下

代码语言:javascript
复制
<?php

function assoc_unique($arr, $key) {
  $tmp_arr = array();
  foreach ($arr as $k =  $v) {
    if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
      unset($arr[$k]);
    } else {
      $tmp_arr[] = $v[$key];
    }
  }
  sort($arr); //sort函数对数组进行排序
  return $arr;
}

$aa = array(
  array('id' =  123, 'name' =  '张三'),
  array('id' =  123, 'name' =  '李四'),
  array('id' =  124, 'name' =  '王五'),
  array('id' =  125, 'name' =  '赵六'),
  array('id' =  126, 'name' =  '赵六')
);
$key = 'id';
assoc_unique(&$aa, $key);
print_r($aa);
? 

显示结果为:

代码语言:javascript
复制
Array ( [0] =  Array ( [id] =  123 [name] =  张三 ) [1] =  Array ( [id] =  124 [name] =  王五 ) [2] =  Array ( [id] =  125 [name] =  赵六 ) [3] =  Array ( [id] =  126 [name] =  赵六 ) )

因内部的一维数组不能完全相同,而删除重复项

代码如下

代码语言:javascript
复制
<?php

function array_unique_fb($array2D) {
  foreach ($array2D as $v) {
    $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
    $temp[] = $v;
  }
  $temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组
  foreach ($temp as $k =  $v) {
    $temp[$k] = explode(",", $v);//再将拆开的数组重新组装
  }
  return $temp;
}
$aa = array(
  array('id' =  123, 'name' =  '张三'),
  array('id' =  123, 'name' =  '李四'),
  array('id' =  124, 'name' =  '王五'),
  array('id' =  123, 'name' =  '李四'),
  array('id' =  126, 'name' =  '赵六')
);
$bb = array_unique_fb($aa);
print_r($bb)
? 

显示结果:

代码语言:javascript
复制
Array ( [0] =  Array ( [0] =  123 [1] =  张三 ) [1] =  Array ( [0] =  123 [1] =  李四 ) [2] =  Array ( [0] =  124 [1] =  王五 ) [4] =  Array ( [0] =  126 [1] =  赵六 ) )

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档