过滤掉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中的cookie
Nov 26 PHP
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
PHP7.3.10编译安装教程
Oct 08 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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 第二节 数据类型之字符串类型
2012/04/28 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
Java中final关键字详解
2015/08/10 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
微信小程序如何获取用户信息
2018/01/26 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
python九九乘法表的实例
2017/09/26 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
详解python数据结构和算法
2019/04/18 Python
Linux的文件类型
2016/07/05 面试题
生产内勤岗位职责
2013/12/07 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
运动员口号
2014/06/09 职场文书
党员志愿者活动总结
2014/06/26 职场文书
小学四年级学生评语
2014/12/26 职场文书
审美与表现自我评价
2015/03/09 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Element实现动态表格的示例代码
2021/08/02 Javascript