全网整合营销服务商

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

免费咨询热线: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 


相关文章: 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小时内与您取得联系。