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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
php 常用类汇总 推荐收藏
May 13 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
PHP数组操作简单案例分析
Oct 15 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP 访问数据库配置通用方法(json)
May 20 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python如何执行系统命令
2020/09/23 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
介绍一下游标
2012/01/10 面试题
党员争先创优承诺书
2015/01/20 职场文书
出生证明格式
2015/06/15 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python