PHP 数组元素去重的两种方法的比较

学习笔记 马富天 2016-09-20 09:37:28 80 1

【摘要】我们有的时候需要将数组中相同值的元素进行去重,通常情况下大家都会想到第一个函数array_unique(),其实不然,还有一个函数array_flip(),本文介绍一下这两种方法,并比较一下执行的时间。

使用array_unique()或array_flip()去重后,键值都会不按顺序,可以使用array_values把键值重新排序。

array_unique():对数组元素进行去重,使用这个方法可以把数组中的元素去重。

或array_flip():键值互换的方法array_flip,我们可以使用这个方法去重,因为键值互换,原来重复的值会变为相同的键。

然后再进行一次键值互换,把键和值换回来则可以完成去重。

代码如下:

  1. $a = [0,1,2,3,4,5,6,7,8,9];
  2. $arr = array();
  3. $arr1 = array();
  4. $arr2 = array();
  5. for($i = 0;$i < 300000;$i++)
  6. {
  7. 	$arr[] = array_rand($a,1);	//	从数组中随机取出一个元素
  8. }
  9. $begin = getMicrotime();
  10. $arr1 = array_unique($arr);
  11. $end = getMicrotime();
  12. $arr1 = array_values($arr1);	//	返回 $arr 数组中所有的值并给其建立数字索引
  13. var_dump($arr1);
  14. echo '使用array_unique()的时间: '.round($end - $begin,4).' 秒';
  15. $begin = getMicrotime();
  16. $arr2 = array_flip(array_flip($arr));
  17. $end = getMicrotime();
  18. $arr2 = array_values($arr2);
  19. var_dump($arr2);
  20. echo '使用array_flip()的时间: '.round($end - $begin,4).' 秒';
  21. //	获取 microtime
  22. function getMicrotime()
  23. {
  24. 	list($usec, $sec) = explode(' ', microtime());
  25. 	return (float)$usec + (float)$sec;
  26. }

运行结果如下图:

请输入图片名称

由上图可以看出,两种方法的运行时间是有很大的差别的:使用array_flip方法去重比使用array_unique方法运行时间减少98%。

版权归 马富天PHP博客 所有

本文标题:《PHP 数组元素去重的两种方法的比较》

本文链接地址:http://www.mafutian.net/206.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 PHP去除字符串中的最后一个字符的三种方法 》 下一篇《 Windows 下 C 开发环境的搭建 》
分享到:

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共1条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码