服务器之家

服务器之家 > 正文

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

时间:2019-12-07 15:01     来源/作者: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表现越好。 

综上所述,在过滤数组重复值的时候,建议使用array_unuique,数组不大的时候两者效率等同,而array_unique使用当然让你的代码一下子减了好几行,数组容量过大时,函数的表现更好,为什么不用呢?

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部