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版(5)
Oct 09 PHP
层叠菜单的动态生成
Oct 09 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
php调用mysql数据 dbclass类
May 07 PHP
Apache中php.ini的设置方法
Feb 28 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php处理抢购类功能的高并发请求
Feb 08 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模板技术[转]
2007/01/04 PHP
php在线打包程序源码
2008/07/27 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
javascript 跳转代码集合
2009/12/03 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
javascript操作数组详解
2014/12/17 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
Python运行DLL文件的方法
2020/01/17 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
个人简历自我评价
2014/02/02 职场文书
上课看小说检讨书
2014/02/22 职场文书
《春晓》教学反思
2014/04/20 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
初三英语教学计划
2015/01/23 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书