过滤掉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异步执行的详解
Jun 03 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP写日志的实现方法
Nov 05 PHP
PHP扩展开发入门教程
Feb 26 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
php源码的安装方法和实例
Sep 26 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
php提高网站效率的技巧
2015/09/29 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
党员的自我评价范文
2014/01/02 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
刑事代理授权委托书
2014/09/17 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
我的中国梦主题班会
2015/08/14 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书