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 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
php实现jQuery扩展函数
Oct 30 PHP
PHP 一个页面执行时间类代码
Mar 05 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
yii2安装详细流程
May 23 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
php 图片上传类代码
2009/07/17 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
js tab效果的实现代码
2009/12/26 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
js选项卡的制作方法
2017/01/23 Javascript
PHP7新特性简述
2017/06/11 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
原生js+css实现tab切换功能
2020/09/17 Javascript
使用PDB模式调试Python程序介绍
2015/04/05 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
文明学生标兵事迹
2014/01/21 职场文书
教学实验楼管理制度
2014/02/01 职场文书
科技之星事迹材料
2014/06/02 职场文书
干部个人对照检查材料
2014/08/25 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
给医院的感谢信
2015/01/21 职场文书
国王的演讲观后感
2015/06/03 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技