过滤PHP数组中重复值的实现代码。
< PHP
$ ArrF =阵();
基于美元=阵();
inttotal = 100美元;
intrand = 10美元;
为($我= 0;美元美元美元我<< inttotal;i++)
{
$ ArrF { } =兰特(1美元intrand);
基于美元{ } =兰特(1美元intrand);
}
美元的= array_merge(ArrF美元,$ ARRS);
arrrf美元=阵();
intstart美元=时间();
foreach($的$ V)
{
If (in_array ($v, $arrRF))
{
继续;
}
其他的
{
arrrf美元{ } = $ V;
}
}
$ =时间();
inttime =美元美元美元intstart打算;
回声继续,花时间:inttime美元;
intstart1美元=时间();
arrrs = array_unique美元(美元的);
intend2美元=时间();
inttime2美元美元美元intstart1 intend2 =;
回声array_unique功能,花时间:($ inttime2);
;
print_r(美元的);
print_r($ arrrf);
print_r($ arrrs);
;
>
在小inttotal美元,为例,在1000美元的价值,intrand不影响结果,同时两执行几乎是相同的。
测试时,inttotal美元大于10000,当intrand美元是100,使用array_unique效率高于foreach循环。intrand美元= 10具有相同的执行时间。
因此,可以得出结论,当数组不够大,不能在1000以内时,使用两者的效率几乎相同。
当阵列规模比较大(具体到我应该珍惜,没有详细的测试,有兴趣的可以确认这个价值什么的),与intrand美元,增加array_unique更好,我没有用inttotal美元/美元intrand比,是因为感觉不成正比变化,但基本会跟随的比例更高,性能更好的array_unique。
总之,当重复值的滤波阵列,推荐使用array_unuique,效率不array_unique等效阵列,并使用你的代码丢失的几行,数组尺寸太大,更好的功能,为什么不呢