全网整合营销服务商

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

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


相关文章: 车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  制作国外网站的软件,国外有哪些比较优质的网站推荐?  大连网站设计制作招聘信息,大连投诉网站有哪些?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速辨别茅台真假?关键步骤解析  平台云上自主建站:模板化设计与智能工具打造高效网站  制作网站的公司有哪些,做一个公司网站要多少钱?  免费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小时内与您取得联系。