全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php 数组元素快速去重

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小时内与您取得联系。