设为首页 收藏本站
查看: 440|回复: 0

[经验分享] PHP数组重复值过滤,到底是选择foreach 还是 array_unique?

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-29 09:40:00 | 显示全部楼层 |阅读模式
  



1 <?php
2  $arrF = array();
3  $arrS = array();
4  $intTotal = 100000;
5 $intRand = 10;
6 for($i=0;$i < $intTotal;$i++)
7 {
8     $arrF[] = rand(1,$intRand);
9     $arrS[] = rand(1,$intRand);
10 }
11 $arrT = array_merge($arrF,$arrS);
12 $arrRF = array();
13 $intStart = time();
14 foreach($arrT as $v)
15 {
16     if(in_array($v,$arrRF)){
17         continue;
18     }else{
19         $arrRF[] = $v;
20     }
21 }
22 $intEnd = time();
23 $intTime = $intEnd-$intStart;
24 echo "With Continue,Spend time:$intTime<br/>";
25 $intStart1 = time();
26 $arrRS = array_unique($arrT);
27 $intEnd2 = time();
28 $intTime2 = $intEnd2-$intStart1;
29 echo "With array_unique function,Spend time:($intTime2)";
30 echo "<pre>";
31 print_r($arrT);
32 print_r($arrRF);
33 print_r($arrRS);
34 echo "</pre>";
35 ?>
36
  

  在$intTotal比较小的情况下,比如说1000以内,$intRand的取值基本不影响结果,两者执行的时间都差不多。
  测试$intTotal 大于10000时,$intRand取值100时,使用array_unique的效率要高于foreach循环判断,$intRand=10,两者执行时间一致。
  
  
  因此,可以得出结论,当数组容量不大,大概在1000以内时,使用两者的执行效率差不多。
  当数组容量比较大时(具体应该到什么值,我没有详细测试,感兴趣的可以确定一下这个值),随着$intRand的逐渐增大,array_unique的表现更好,我不使用$intTotal/$intRand这个比值,是因为,感觉并不是成比例变化,但是基本会遵循比值越大,array_unique表现越好。
  遵上所述,在过滤数组重复值的时候,建议使用array_unuique,数组不大的时候两者效率等同,而array_unique使用当然让你的代码一下子减了好几行,数组容量过大时,函数的表现更好,为什么不用呢?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105780-1-1.html 上篇帖子: 通用权限管理系统多语言开发接口 下篇帖子: PHP Warning: date() [function.date]: It is not safe to rely on the system's time
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表