$arrF = array();
$arrS = array();
$intTotal = 100;
$intRand = 10;
for($i=0; $i {
$arrF[] = rand(1, $intRand);
$arrS[] = rand(1, $intRand);
}
$arrT = array_merge($arrF, $arrS);
$arrRF = array();
$intStart = 时间();
foreach($arrT as $v)
{
if(in_array($v, $arrRF))
{
继续;
}
其他
{
$arrRF[] = $v;
}
}
$intEnd = time();
$intTime = $intEnd-$intStart;
echo "随着继续,花费时间:$intTime
";
$intStart1 = 时间();
$arrRS = array_unique($arrT);
$intEnd2 = 时间();
$intTime2 = $intEnd2-$intStart1;
echo "使用 array_unique 函数,花费时间:($intTime2)";
回显“
”; <BR>print_r($arrT); <BR>print_r($arrRF); <BR>print_r($arrRS); <BR>回显“
”;
?>
在$intTotal比较小的情况下,果1000以内,$intRand的取值基本不影响结果,两者执行的时间都差不多。
测试$intTotal大于10000时,$intRand取值100时,使用array_unique的效率要进行foreach循环判断,$intRand=10,两者执行时间一致。
,可以得出结论,当批量容量不大,大概在1000以内时,使用两者的执行效率差不多。
当内存容量比较大时(具体应该到什么值,我没有详细测试,感兴趣的可以确定一下这个值),随着$intRand的逐渐增大,array_unique的表现更好,我不使用$intTotal/$intRand这个比值,是因为,感觉没有成比例变化,但是会跟随比值变大,基本array_unique表现得更好。
综上,在过滤集群重复值的时候说的,建议使用array_unuique,存储不大的时候两者效率正好,而array_unique使用当然让你的代码一下子减少了好几行,存储容量过大时,函数的表现更好,为什么不用呢?