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 相关文章推荐
PHP的FTP学习(四)
Oct 09 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
memcache命令启动参数中文解释
Jan 13 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 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
重置版游戏视频
2020/04/09 魔兽争霸
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
高职教师岗位职责
2013/12/24 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
八年级物理教学反思
2014/01/19 职场文书
商务考察邀请函范文
2014/01/21 职场文书
政治表现评语
2014/05/04 职场文书
公务员个人考察材料
2014/12/23 职场文书
华清池导游词
2015/02/02 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python