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 26 PHP
一个简单的PHP&MYSQL留言板源码
Jul 19 PHP
开源SNS系统-ThinkSNS
May 18 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
PHP中的string类型使用说明
Jul 27 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 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开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
Javascript alert消息换行的方法
2013/08/07 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
浅谈python数据类型及类型转换
2017/12/18 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
Python如何在bool函数中取值
2020/09/21 Python
用Python 执行cmd命令
2020/12/18 Python
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
软件工程专业推荐信
2013/10/28 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
运动会广播稿20字
2015/08/19 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers