过滤掉PHP数组中的重复值的实现代码


Posted in PHP onJuly 17, 2011
<?php 
$arrF = array(); 
$arrS = array(); 
$intTotal = 100; 
$intRand = 10; 
for($i=0; $i < $intTotal; $i++) 
{ 
$arrF[] = rand(1, $intRand); 
$arrS[] = rand(1, $intRand); 
} 
$arrT = array_merge($arrF, $arrS); 
$arrRF = array(); 
$intStart = time(); 
foreach($arrT as $v) 
{ 
if(in_array($v, $arrRF)) 
{ 
continue; 
} 
else 
{ 
$arrRF[] = $v; 
} 
} 
$intEnd = time(); 
$intTime = $intEnd-$intStart; 
echo "With Continue,Spend time:$intTime<br/>"; 
$intStart1 = time(); 
$arrRS = array_unique($arrT); 
$intEnd2 = time(); 
$intTime2 = $intEnd2-$intStart1; 
echo "With array_unique function,Spend time:($intTime2)"; 
echo "<pre>"; 
print_r($arrT); 
print_r($arrRF); 
print_r($arrRS); 
echo "</pre>"; 
?>

在$intTotal比较小的情况下,比如说1000以内,$intRand的取值基本不影响结果,两者执行的时间都差不多。

测试$intTotal 大于10000时,$intRand取值100时,使用array_unique的效率要高于foreach循环判断,$intRand=10,两者执行时间一致。

因此,可以得出结论,当数组容量不大,大概在1000以内时,使用两者的执行效率差不多。

当数组容量比较大时(具体应该到什么值,我没有详细测试,感兴趣的可以确定一下这个值),随着$intRand的逐渐增大,array_unique的表现更好,我不使用$intTotal/$intRand这个比值,是因为,感觉并不是成比例变化,但是基本会遵循比值越大,array_unique表现越好。

综上所述,在过滤数组重复值的时候,建议使用array_unuique,数组不大的时候两者效率等同,而array_unique使用当然让你的代码一下子减了好几行,数组容量过大时,函数的表现更好,为什么不用呢?

PHP 相关文章推荐
PHP 和 MySQL 基础教程(三)
Oct 09 PHP
PHP 加密与解密的斗争
Apr 17 PHP
php csv操作类代码
Dec 14 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 PHP
PHP二维数组的去重问题解析
Jul 17 #PHP
简单的PHP多图上传小程序代码
Jul 17 #PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 #PHP
PHP 验证码的实现代码
Jul 17 #PHP
PHP中用hash实现的数组
Jul 17 #PHP
PHP中文分词的简单实现代码分享
Jul 17 #PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 #PHP
You might like
php实现的mongodb操作类
2015/05/28 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php实现网站留言板功能
2015/11/04 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
javascript String 对象
2008/04/25 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
Python和php通信乱码问题解决方法
2014/04/15 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python验证码截取识别代码实例
2020/05/16 Python
python 制作本地应用搜索工具
2021/02/27 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
高一新生军训感言
2014/03/02 职场文书
文化建设工作方案
2014/05/12 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2014年教学工作总结
2014/11/13 职场文书