过滤掉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的FTP学习(一)
Oct 09 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
cakephp打印sql语句的方法
Feb 13 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
php时间函数用法分析
May 28 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
Laravel定时任务的每秒执行代码
Oct 22 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python连接phoenix的方法示例
2017/09/29 Python
Python文件的读写和异常代码示例
2017/10/31 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
浅析Python3 pip换源问题
2020/01/06 Python
使用Tkinter制作信息提示框
2020/02/18 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
单位委托书范本
2014/04/04 职场文书
说明书怎么写
2014/05/06 职场文书
财务会计专业求职信
2014/06/09 职场文书
学习礼仪心得体会
2014/09/01 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
iPhone13将有八大升级
2021/04/15 数码科技