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 相关文章推荐
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php 生成随机验证码图片代码
Feb 08 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 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/07/07 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
某同学的自我鉴定范文
2013/12/26 职场文书
母婴店促销方案
2014/03/05 职场文书
讲解员培训方案
2014/05/04 职场文书
公司周年庆典标语
2014/10/07 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
边城读书笔记
2015/06/29 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android