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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
php垃圾代码优化操作代码
Aug 05 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 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和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php中opendir函数用法实例
2014/11/15 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
php实现简单四则运算器
2020/11/29 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
python thread 并发且顺序运行示例
2009/04/09 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
flask中的wtforms使用方法
2018/07/21 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
四年大学生活的自我评价范文
2014/02/07 职场文书
3分钟演讲稿
2014/04/30 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书