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 相关文章推荐
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
深入PHP数据加密详解
Jun 18 PHP
php去除HTML标签实例
Nov 06 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 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 MPDF中文乱码的解决方式
2015/12/08 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
Python3如何判断三角形的类型
2020/04/12 Python
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
nohup的用法
2014/08/10 面试题
opencv实现图像几何变换
2021/03/24 Python
总裁助理岗位职责
2014/02/17 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
学生党员检讨书范文
2014/12/27 职场文书
任命书格式模板
2015/09/22 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
JS实现数组去重的11种方法总结
2022/04/04 Javascript
Redis 异步机制
2022/05/15 Redis
MySQL sql模式设置引起的问题
2022/05/15 MySQL