PHP编程快速实现数组去重的方法详解


Posted in PHP onJuly 22, 2017

本文实例讲述了PHP编程快速实现数组去重的方法。分享给大家供大家参考,具体如下:

概述

使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组。这个函数大多数情况下都能工作得很好。但是,如果你尝试在一个大的数组里使用array_unique()函数,它会运行地慢一些。

有一个比较好而且更快的函数array_flip()来替代使用array_unique()函数来创建唯一的数组。这个魔法般的函数会交换数组里面每一个元素的键和值,因为键值必须唯一,因此,你会得到跟array_unique()函数一样的结果。

更快的方式实现PHP数组去重

/* 创建一个包含重复值的,一共四个元素的数组 */
$array = array('green','blue','orange','blue');
/* 翻转数组,你将会得到唯一键值的数组
array('green'=>0,'blue'=>1,'orange'=>2); */
$array = array_flip($array);
/* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>'green',1=>'blue',2=>'orange'); */
$array = array_flip($array);

因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们可能会得到:

array(0=>'A',2=>'B',5=>'C');

在某些情况下,这不是一个问题,但是如果你需要数组的键值保持数字的序列,你可以使用一到两种方法解决键值乱序的问题。

使用array_merge修复数组的keys

添加array_flip之后的函数,将会对数组的键值排序并且让它们恢复到正常的序列,如:0,1,2,3…

$array = array('green','blue','orange','blue');
$array = array_flip($array);
$array = array_flip($array);
/* 使用array_merge()函数修复键值*/
$array = array_merge($array);

第二种方式,使用array_keys

注意,这种修复数组键值的方法比使用array_merge()函数稍微快了一点。你也可以在最后一步结合使用array_keys()函数(此函数返回翻转后的值)。然后当你翻转数组的值,键值就会根据顺序创建。

$array = array('green','blue','orange','blue');
$array = array_flip($array);
/* 跟第一个例子一样,但是现在我们先提取数组的键值 */
$array = array_keys($array);

PS:本站还有两款比较简单实用的在线文本去重复工具,推荐给大家使用:

在线去除重复项工具:
http://tools.3water.com/code/quchong

在线文本去重复工具:
http://tools.3water.com/aideddesign/txt_quchong

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
WordPress伪静态规则设置代码实例
Dec 10 PHP
php使用ftp实现文件上传与下载功能
Jul 21 #PHP
YII2框架中excel表格导出的方法详解
Jul 21 #PHP
实例讲解YII2中多表关联的使用方法
Jul 21 #PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 #PHP
php实现基于pdo的事务处理方法示例
Jul 21 #PHP
php基于自定义函数记录log日志方法
Jul 21 #PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 #PHP
You might like
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
详解a++和++a的区别
2017/08/30 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python实现单链表的方法示例
2019/09/03 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
元旦联欢会感言
2014/03/04 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
2014年新生军训方案
2014/05/01 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
年底个人总结范文
2015/03/10 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Python的三个重要函数详解
2022/01/18 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android