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
相关文章:
如何选择CMS系统实现快速建站与SEO优化?
如何快速搭建虚拟主机网站?新手必看指南
济南专业网站制作公司,济南信息工程学校怎么样?
宝塔建站无法访问?如何排查配置与端口问题?
如何选择香港主机高效搭建外贸独立站?
,柠檬视频怎样兑换vip?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
宝塔新建站点报错如何解决?
如何选购建站域名与空间?自助平台全解析
简单实现Android验证码
如何生成腾讯云建站专用兑换码?
如何在阿里云完成域名注册与建站?
如何批量查询域名的建站时间记录?
公司网站设计制作厂家,怎么创建自己的一个网站?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
建站之星如何通过成品分离优化网站效率?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
如何撰写建站申请书?关键要点有哪些?
如何获取上海专业网站定制建站电话?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
广德云建站网站建设方案与建站流程优化指南
建站之星导航如何优化提升用户体验?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何获取开源自助建站系统免费下载链接?
再谈Python中的字符串与字符编码(推荐)
如何在搬瓦工VPS快速搭建网站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何设置并定期更换建站之星安全管理员密码?
威客平台建站流程解析:高效搭建教程与设计优化方案
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
淘宝制作网站有哪些,淘宝网官网主页?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
C#如何使用XPathNavigator高效查询XML
Bpmn 2.0的XML文件怎么画流程图
制作旅游网站html,怎样注册旅游网站?
如何通过智能用户系统一键生成高效建站方案?
,网页ppt怎么弄成自己的ppt?
建站之星代理如何优化在线客服效率?
建站之星会员如何解锁更多建站功能?
教学网站制作软件,学习*后期制作的网站有哪些?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
家庭服务器如何搭建个人网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何快速生成橙子建站落地页链接?
网站企业制作流程,用什么语言做企业网站比较好?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。