博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】我们有的时候需要将数组中相同值的元素进行去重,通常情况下大家都会想到第一个函数array_unique(),其实不然,还有一个函数array_flip(),本文介绍一下这两种方法,并比较一下执行的时间。
使用array_unique()或array_flip()去重后,键值都会不按顺序,可以使用array_values把键值重新排序。
array_unique():对数组元素进行去重,使用这个方法可以把数组中的元素去重。
或array_flip():键值互换的方法array_flip,我们可以使用这个方法去重,因为键值互换,原来重复的值会变为相同的键。
然后再进行一次键值互换,把键和值换回来则可以完成去重。
代码如下:
$a = [0,1,2,3,4,5,6,7,8,9];
$arr = array();
$arr1 = array();
$arr2 = array();
for($i = 0;$i < 300000;$i++)
{
$arr[] = array_rand($a,1); // 从数组中随机取出一个元素
}
$begin = getMicrotime();
$arr1 = array_unique($arr);
$end = getMicrotime();
$arr1 = array_values($arr1); // 返回 $arr 数组中所有的值并给其建立数字索引
var_dump($arr1);
echo '使用array_unique()的时间: '.round($end - $begin,4).' 秒';
$begin = getMicrotime();
$arr2 = array_flip(array_flip($arr));
$end = getMicrotime();
$arr2 = array_values($arr2);
var_dump($arr2);
echo '使用array_flip()的时间: '.round($end - $begin,4).' 秒';
// 获取 microtime
function getMicrotime()
{
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
运行结果如下图:
由上图可以看出,两种方法的运行时间是有很大的差别的:使用array_flip方法去重比使用array_unique方法运行时间减少98%。
版权归 马富天PHP博客 所有
本文标题:《PHP 数组元素去重的两种方法的比较》
本文链接地址:http://www.mafutian.net/206.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
第 1 楼 最好的代写essay服务 2016-09-21 21:41:03 黑森Frankfurt
评论审核未开启 |