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.ini中文版
Oct 09 PHP
WINXP下apache+php4+mysql
Nov 25 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
php模板中出现空行解决方法
Mar 08 PHP
php删除数组元素示例分享
Feb 17 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python正则-re的用法详解
2019/07/28 Python
python机器学习库xgboost的使用
2020/01/20 Python
Numpy 多维数据数组的实现
2020/06/18 Python
如何利用python 读取配置文件
2021/01/06 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
食堂个人先进事迹
2014/01/22 职场文书
群众路线剖析材料
2014/02/02 职场文书
职工运动会感言
2014/02/07 职场文书
老公爱的承诺书
2014/03/31 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
学校通报表扬范文
2015/05/04 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python