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之第四天
Oct 09 PHP
php a simple smtp class
Nov 26 PHP
How do I change MySQL timezone?
Mar 26 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
php中fsockopen用法实例
Jan 05 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
php 数组元素快速去重
May 05 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
php实现的PDO异常处理操作分析
Dec 27 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模拟HTTP认证
2006/10/09 PHP
PHP 多进程 解决难题
2009/06/22 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
js DOM模型操作
2009/12/28 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
syb养殖创业计划书
2014/01/09 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
安全标语口号
2014/06/09 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
单位介绍信格式范文
2015/05/04 职场文书
单位同意报考证明
2015/06/17 职场文书
《山中访友》教学反思
2016/02/24 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL