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
网站加速 PHP 缓冲的免费实现方法
Oct 09 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
基于php权限分配的实现代码
Apr 28 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
php url路由入门实例
Apr 23 PHP
PHP实现的进度条效果详解
May 03 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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通用检测函数集合
2011/02/08 PHP
php代码架构的八点注意事项
2016/01/25 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
PHP chr()函数讲解
2019/02/11 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
详解webpack分包及异步加载套路
2017/06/29 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
通过js给网页加上水印背景实例
2019/06/17 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
tornado 多进程模式解析
2018/01/15 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
大学军训感言400字
2014/03/11 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
学习心得体会
2019/06/20 职场文书