过滤掉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 采集获取指定网址的内容
Jan 05 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
CI框架中zip类应用示例
Jun 17 PHP
php实现读取内存顺序号
Mar 29 PHP
php编写简单的文章发布程序
Jun 18 PHP
php实现遍历多维数组的方法
Nov 25 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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对文件进行hash运算的方法
2015/04/03 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
javascript数组去掉重复
2011/05/12 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
python中MySQLdb模块用法实例
2014/11/10 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
python3 re返回形式总结
2020/11/20 Python
求职简历中自我评价
2014/01/28 职场文书
《画家乡》教学反思
2014/04/22 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
教师个人师德总结
2015/02/06 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis