PHP两种去掉数组重复值的方法比较


Posted in PHP onJune 19, 2014

去除一个数组中的重复值,可以使用foreach方法,也可以使用array_unique方法,下面的代码两种方法都使用了。

<?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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 #PHP
ThinkPHP3.1基础知识快速入门
Jun 19 #PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 #PHP
php使用百度ping服务代码实例
Jun 19 #PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 #PHP
PHP采集类Snoopy抓取图片实例
Jun 19 #PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 #PHP
You might like
利用static实现表格的颜色隔行显示
2006/10/09 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
浅析javascript 定时器
2014/12/23 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
js实现五星评价功能
2017/03/08 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python内置数据类型之列表操作
2018/11/12 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python实现邮件循环自动发件功能
2020/09/11 Python
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
班长竞选演讲稿
2014/04/24 职场文书
求职信怎么写
2014/05/23 职场文书
医德医魂心得体会
2014/09/11 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
丽江古城导游词
2015/02/03 职场文书
东京审判观后感
2015/06/01 职场文书
交通安全温馨提示语
2015/07/14 职场文书
新闻报道稿范文
2015/07/23 职场文书
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA