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
相关文章:
C#怎么使用委托和事件 C# delegate与event编程方法
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何快速完成中国万网建站详细流程?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
jQuery 常见小例汇总
,柠檬视频怎样兑换vip?
深入理解Android中的xmlns:tools属性
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
浅析上传头像示例及其注意事项
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
网站制作报价单模板图片,小松挖机官方网站报价?
,sp开头的版面叫什么?
简单实现Android验证码
山东云建站价格为何差异显著?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站168自助建站系统:快速模板定制与SEO优化指南
成都网站制作报价公司,成都工业用气开户费用?
如何在阿里云虚拟主机上快速搭建个人网站?
如何通过商城免费建站系统源码自定义网站主题?
济南网站制作的价格,历城一职专官方网站?
c# await 一个已经完成的Task会发生什么
开源网站制作软件,开源网站什么意思?
网站制作需要会哪些技术,建立一个网站要花费多少?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
PHP正则匹配日期和时间(时间戳转换)的实例代码
制作销售网站教学视频,销售网站有哪些?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何用狗爹虚拟主机快速搭建网站?
如何在西部数码注册域名并快速搭建网站?
如何用好域名打造高点击率的自主建站?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
再谈Python中的字符串与字符编码(推荐)
如何通过WDCP绑定主域名及创建子域名站点?
如何用y主机助手快速搭建网站?
如何在自有机房高效搭建专业网站?
制作网页的网站有哪些,电脑上怎么做网页?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
python的本地网站制作,如何创建本地站点?
大型企业网站制作流程,做网站需要注册公司吗?
江苏网站制作公司有哪些,江苏书法考级官方网站?
如何高效配置IIS服务器搭建网站?
如何通过VPS搭建网站快速盈利?
制作网站外包平台,自动化接单网站有哪些?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何通过.red域名打造高辨识度品牌网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。