过滤掉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在字符串中查找指定字符串并删除的代码
Oct 02 PHP
一个php导出oracle库的php代码
Apr 20 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
php微信开发之关注事件
Jun 14 PHP
Yii框架安装简明教程
May 15 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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简单生成缩略图相册的方法
2015/07/29 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python getopt模块使用实例解析
2019/12/18 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
浅析python中的del用法
2020/09/02 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
Overload和Override的区别
2012/09/02 面试题
如何现实servlet的单线程模式
2014/08/05 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
区域总监的岗位职责
2013/11/21 职场文书
法制宣传日活动总结
2014/04/29 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android