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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
如何让CI框架支持service层
Oct 29 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php实现字符串翻转的方法
Mar 27 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP单态模式简单用法示例
Nov 16 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
php面试实现反射注入的详细方法
Sep 30 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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实现动态柱状图改进版
2015/03/30 PHP
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jquery获取radio值实例
2014/10/16 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
python利用sklearn包编写决策树源代码
2017/12/21 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
django ajax json的实例代码
2018/05/29 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
详解Python字符串切片
2019/05/20 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
django中forms组件的使用与注意
2019/07/08 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
个人生活学习自我评价范文
2013/11/26 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
如何写好建议书
2014/03/13 职场文书
市场营销调查计划书
2014/05/02 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
运动会主持人开幕词
2016/03/04 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android