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 Undefined index和Undefined variable的解决方法
Mar 27 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
php中hashtable实现示例分享
Feb 13 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
php中的依赖注入实例详解
Aug 14 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安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
js定时器实现倒计时效果
2017/11/05 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
python中lambda与def用法对比实例分析
2015/04/30 Python
Python实现统计代码行的方法分析
2017/07/12 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python函数定义和调用过程详解
2020/02/09 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Python如何在bool函数中取值
2020/09/21 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
web页面录屏实现
2019/02/12 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
软件设计的目标是什么
2016/12/04 面试题
协议书怎么写
2014/04/21 职场文书
2014年团工作总结
2014/11/27 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
解决mysql的int型主键自增问题
2021/07/15 MySQL
MySql分区类型及创建分区的方法
2022/04/13 MySQL