过滤掉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 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
ThinkPHP分页实例
Oct 15 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php检测url是否存在的方法
Apr 14 PHP
PHP简单实现无限级分类的方法
May 13 PHP
PHP精确计算功能示例
Nov 29 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 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下统计用户在线时间的一种尝试
2010/08/26 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python 格式化输出百分号的方法
2019/01/20 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
成教毕业生自我鉴定
2013/10/23 职场文书
管理科学大学生求职信
2013/11/13 职场文书
国窖1573广告词
2014/03/21 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
js实现模拟购物商城案例
2021/05/18 Javascript
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL