过滤掉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 5.0对象模型深度探索之绑定
Sep 05 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php对数组排序代码分享
Feb 24 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
php实现微信支付之企业付款
May 30 PHP
详解php命令注入攻击
Apr 06 PHP
laravel-admin select框默认选中的方法
Oct 03 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
PHP实现页面静态化深入讲解
Mar 04 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/04/27 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
vue中如何使用ztree
2018/02/06 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
js实现简易ATM功能
2020/10/27 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
python文件比较示例分享
2014/01/10 Python
跟老齐学Python之复习if语句
2014/10/02 Python
python调用API实现智能回复机器人
2018/04/10 Python
Django之腾讯云短信的实现
2020/06/12 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Java里面有没有全局变量?为什么?
2015/02/06 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
应届生自我鉴定
2013/12/11 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
运动会入场词60字
2014/02/15 职场文书
大学军训感言1000字
2014/02/25 职场文书
对标管理实施方案
2014/03/12 职场文书
颁奖典礼主持词
2014/03/25 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers