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 静态化实现代码
Mar 20 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
YII框架批量插入数据的方法
Mar 18 PHP
PHP中trait使用方法详细介绍
May 21 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 PHP
php array_map()函数实例用法
Mar 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的宝库目录--PEAR
2006/10/09 PHP
PHP图片上传类带图片显示
2006/11/25 PHP
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
php中实现记住密码自动登录的代码
2011/03/02 PHP
基于php-fpm的配置详解
2013/06/03 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
python pygame模块编写飞机大战
2018/11/20 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
python设置随机种子实例讲解
2019/09/12 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
毕业生自我推荐
2013/11/04 职场文书
工地质量标语
2014/06/12 职场文书
供用电专业求职信
2014/07/07 职场文书
体育教师个人工作总结
2015/02/09 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
检讨书之工作不认真
2019/08/14 职场文书
创业计划书之物流运送
2019/09/17 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android