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类
Nov 27 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP超全局数组(Superglobals)介绍
Jul 01 PHP
PHP框架性能测试报告
May 08 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 PHP
PHP中SESSION过期设置
Mar 09 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 中文乱码解决办法总结分析
2009/07/30 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
Python中的hypot()方法使用简介
2015/05/18 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
Python3.4解释器用法简单示例
2019/03/22 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
应届毕业生个人求职信范文
2014/01/29 职场文书
《长城》教学反思
2014/02/14 职场文书
乔迁之喜主持词
2014/03/27 职场文书
服务标兵事迹材料
2014/05/04 职场文书
公司承诺书格式
2014/05/21 职场文书
学校食品安全实施方案
2014/06/14 职场文书
项目负责人岗位职责
2015/02/15 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
python opencv旋转图片的使用方法
2021/06/04 Python
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL