php 数组元素去重复的方法
2017-05-16 22:56:53
•
阅读
打赏
array_unique函数进行去重
对数组元素进行去重,我们一般会使用array_unique方法,使用这个方法可以把数组中的元素去重。
去重后,键值会不按顺序,可以使用array_values把键值重新排序。
$arr = array(1, 1, 2, 3, 3, 3, 2, 6, 5, 6, 6, 7, 12, 12, 9, 9, 9);
$arr = array_unique($arr);
//输出 Array ( [0] => 1 [2] => 2 [3] => 3 [7] => 6 [8] => 5 [11] => 7 [12] => 12 [14] => 9 )
print_r($arr);
//去重后,键名会不按顺序,可以使用array_values把键值重新排序。
$arr = array_values($arr);
//输出 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 [4] => 5 [5] => 7 [6] => 12 [7] => 9 )
print_r($arr);
更快的数组array_flip函数去重
PHP有一个键值互换的方法array_flip,我们可以使用这个方法去重,因为键值互换,原来重复的值会变为相同的键。
然后再进行一次键值互换,把键和值换回来则完成去重。
$arr = array();
// 创建100000个随机元素的数组
for ($i = 0; $i < 100000; $i++) {
$arr[] = mt_rand(1, 99);
}
// 记录开始时间
$starttime = getMicrotime();
// 使用键值互换去重
$arr = array_flip($arr);
$arr = array_flip($arr);
//使用array_unique去重
//$arr = array_unique($arr);
// 记录结束时间
$endtime = getMicrotime();
$arr = array_values($arr);
echo 'unique count:' . count($arr) . '<br>';
echo 'run time:' . (float)(($endtime - $starttime) * 1000) . 'ms<br>';
echo 'use memory:' . getUseMemory();
/** * 获取使用内存 * @return float */
function getUseMemory()
{
$use_memory = round(memory_get_usage(true) / 1024, 2) . 'kb';
return $use_memory;
}
/** * 获取microtime * @return float */
function getMicrotime()
{
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
使用array_flip方法去重,运行时间需要约2.9ms,内存占用约2m
使用array_unique方法去重,运行时间需要约220ms,内存占用约2m
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型