使用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%。