当前位置: 萬仟网 > IT编程>开发语言>PHP > 过滤掉PHP数组中的重复值的实现代码

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

2019年04月21日 00:04  | 萬仟网IT编程  | 我要评论
复制代码 代码如下:

<?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使用当然让你的代码一下子减了好几行,数组容量过大时,函数的表现更好,为什么不用呢?

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

◎已有 0 人评论

Copyright © 2019  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com