1.使用array_unique方法进行去重

对数组元素进行去重,我们一般会使用array_unique方法,使用这个方法可以把数组中的元素去重。
<?php $arr = array(1,1,2,3,3,3,4,4,5,6,6,7,8,8,9,9,9); $arr = array_unique($arr); $arr = array_values($arr); print_r($arr); ?>
输出:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
去重后,键值会不按顺序,可以使用array_values把键值重新排序。
2.使用array_unique方法去重效率
<?php
$arr = array();
// 创建100000个随机元素的数组
for($i=0; $i<100000; $i++){
$arr[] = mt_rand(1,99);
}
// 记录开始时间
$starttime = getMicrotime();
// 去重
$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;
}
?>
unique count:99
run time:653.39303016663ms
use memory:5120kb
使用array_unique方法去重,运行时间需要约650ms,内存占用约5m
3.更快的数组去重方法
PHP有一个键值互换的方法array_flip,我们可以使用这个方法去重,因为键值互换,原来重复的值会变为相同的键。
然后再进行一次键值互换,把键和值换回来则可以完成去重。
<?php
$arr = array();
// 创建100000个随机元素的数组
for($i=0; $i<100000; $i++){
$arr[] = mt_rand(1,99);
}
// 记录开始时间
$starttime = getMicrotime();
// 使用键值互换去重
$arr = array_flip($arr);
$arr = array_flip($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;
}
?>
unique count:99
run time:12.840032577515ms
use memory:768kb
使用array_flip方法去重,运行时间需要约18ms,内存占用约2m
因此使用array_flip方法去重比使用array_unique方法运行时间减少98%,内存占用减少4/5;
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# php
# 数组
# 去重
# PHP中array_keys和array_unique函数源码的分析
# php数组函数序列之array_unique() - 去除数组中重复的元素值
# php array_unique之后json_encode需要注意
# php下判断数组中是否存在相同的值array_unique
# PHP数组去重的更快实现方式分析
# PHP编程快速实现数组去重的方法详解
# PHP二维数组去重算法
# php二维数组合并及去重复的方法
# PHP基于array_unique实现二维数组去重
# 键值
# 使用这个
# 结束时间
# 我们可以
# 然后再
# 更快
# 可以使用
# 则可
# 不按
# 有一个
# 组中
# mt_rand
# 去重后
# endtime
# echo
# unique
# count
# starttime
# getMicrotime
# Array
相关文章:
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
制作国外网站的软件,国外有哪些比较优质的网站推荐?
大连网站设计制作招聘信息,大连投诉网站有哪些?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何快速辨别茅台真假?关键步骤解析
平台云上自主建站:模板化设计与智能工具打造高效网站
制作网站的公司有哪些,做一个公司网站要多少钱?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何在Windows服务器上快速搭建网站?
西安大型网站制作公司,西安招聘网站最好的是哪个?
,石家庄四十八中学官网?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何选择建站程序?包含哪些必备功能与类型?
青岛网站建设如何选择本地服务器?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
建站之星代理平台如何选择最佳方案?
如何快速搭建高效服务器建站系统?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何在阿里云香港服务器快速搭建网站?
python的本地网站制作,如何创建本地站点?
建站168自助建站系统:快速模板定制与SEO优化指南
如何用狗爹虚拟主机快速搭建网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
企业微网站怎么做,公司网站和公众号有什么区别?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何在建站宝盒中设置产品搜索功能?
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
建站之星安装后如何自定义网站颜色与字体?
广州美橙建站如何快速搭建多端合一网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Swift中循环语句中的转移语句 break 和 continue
建站之星与建站宝盒如何选择最佳方案?
如何通过可视化优化提升建站效果?
建站之星如何配置系统实现高效建站?
智能起名网站制作软件有哪些,制作logo的软件?
建站之星安装路径如何正确选择及配置?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何在云主机快速搭建网站站点?
如何在阿里云ECS服务器部署织梦CMS网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
深圳网站制作的公司有哪些,dido官方网站?
如何快速搭建响应式可视化网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。