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


Posted in PHP onJuly 14, 2020

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

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

一维数组的重复项:

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

代码如下

<?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代码如下

<?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);
?>

显示结果为:

Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

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

代码如下

<?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)
?>

显示结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php getsiteurl()函数
Sep 05 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
Yii框架中memcache用法实例
Dec 03 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
Yii 2.0如何使用页面缓存方法示例
May 23 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 #PHP
通过实例解析PHP数据类型转换方法
Jul 11 #PHP
PHP var关键字相关原理及使用实例解析
Jul 11 #PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 #PHP
基于PHP实现短信验证码发送次数限制
Jul 11 #PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 #PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 #PHP
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
Yii2如何批量添加数据
2016/05/17 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
PHP学习记录之数组函数
2018/06/01 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
重定向实现代码
2006/11/20 Javascript
javascript引用对象的方法
2007/01/11 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
python 利用zmail库发送邮件
2020/09/11 Python
pandas针对excel处理的实现
2021/01/15 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
社区文艺活动方案
2014/08/19 职场文书
消防志愿者活动方案
2014/08/23 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
欠条样本
2015/07/03 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书