过滤掉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 得到根目录的 __FILE__ 常量
Jul 23 PHP
php获取地址栏信息的代码
Oct 08 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
CodeIgniter使用smtp服务发送html邮件的方法
Jun 10 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
Feb 19 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP的PDO大对象(LOBs)
Jan 27 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入门基础之php代码写法
2011/12/30 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python读写json文件的简单实现
2017/04/11 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python实现决策树
2017/12/21 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python3.6简单反射操作示例
2018/06/14 Python
Python中super函数用法实例分析
2019/03/18 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
详解Python流程控制语句
2020/10/28 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
高一历史教学反思
2014/01/13 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
利用js实现简单开关灯代码
2021/11/23 Javascript
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫