PHP数组中的重复值过滤的实现方法

函数从数组中过滤重复值并返回结果数组,当多个数组元素的值相等时,只保留第一个元素,会过滤了其他元素,下文是小编为您整理的PHP数组中的重复值过滤的实现方法,一起进入下文了解一下吧!

代码如下:
<?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表现越好。

原文出处:赵斌自媒体 » PHP数组中的重复值过滤的实现方法

超级源码专业为您提供超级源码网,源码分享,商业源码,源码分享平台,实用软件,破解软件,培训教程等全网优质资源。
超级源码网 » PHP数组中的重复值过滤的实现方法

发表评论

Captcha Code

欢迎您免费注册发布自己的优质资源,利用平台的海量用户流量,获取丰厚销售提成!

立即发布 我的资源