过滤掉PHP数组中的重复值的实现代码


Posted in PHP onJuly 17, 2011
<?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代码
Dec 06 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
php将数组存储为文本文件方法汇总
Oct 28 PHP
PHP运行模式汇总
Nov 06 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 PHP
PHP二维数组的去重问题解析
Jul 17 #PHP
简单的PHP多图上传小程序代码
Jul 17 #PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 #PHP
PHP 验证码的实现代码
Jul 17 #PHP
PHP中用hash实现的数组
Jul 17 #PHP
PHP中文分词的简单实现代码分享
Jul 17 #PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 #PHP
You might like
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php Calender(日历)代码分享
2014/01/03 PHP
初识PHP
2014/09/28 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
十个Python程序员易犯的错误
2015/12/15 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
python读取几个G的csv文件方法
2019/01/07 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
详解python tcp编程
2020/08/24 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
几个SQL的面试题
2014/03/08 面试题
数控技术应届生求职信
2013/11/13 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
学校就业推荐信范文
2014/05/19 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
北京英语导游词
2015/02/12 职场文书
Python入门之基础语法详解
2021/05/11 Python
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫