全网整合营销服务商

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

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

php 查找数组元素提高效率的方法详解

1.php in_array方法说明

PHP查找数组元素是否存在,一般会使用in_array方法。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

参数说明:

needle

待搜索的值,如果needle是字符串,比较是区分大小写的。

haystack

用来比较的数组

strict

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同

返回值

如果找到 needle 则返回 TRUE,否则返回 FALSE

2.in_array查找元素效率

当比较的数组haystack较大时,in_array效率会很低

例子:使用in_array对有10万个元素的数组进行1000次比较

<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
 $arr[] = $i;
}

// 记录开始时间
$starttime = getMicrotime();

// 随机创建1000个数字使用in_array比较
for($j=0; $j<1000; $j++){
 $str = mt_rand(1,99999);
 in_array($str, $arr);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}
?>

run time:2003.6449432373ms

使用in_array判断元素是否存在,在10万个元素的数组中比较1000次,运行时间需要约2秒

3.提高查找元素效率方法

我们可以先使用array_flip进行键值互换,然后使用isset方法来判断元素是否存在,这样可以提高效率。

例子:使用array_flip先进行键值互换,再使用isset方法判断,在10万个元素的数组中比较1000次

<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
 $arr[] = $i;
}

// 键值互换
$arr = array_flip($arr);

// 记录开始时间
$starttime = getMicrotime();

// 随机创建1000个数字使用isset比较
for($j=0; $j<1000; $j++){
 $str = mt_rand(1,99999);
 isset($arr[$str]);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
 list($usec, $sec) = explode(' ', microtime());
 return (float)$usec + (float)$sec;
}
?>

run time:1.2781620025635ms

使用array_flipisset判断元素是否存在,在10万个元素的数组中比较1000次,运行时间需要约1.2毫秒

因此,对于大数组进行比较,使用array_flipisset方法会比in_array效率高很多。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# php  # 数组查找元素  # PHP的数组中提高元素查找与元素去重的效率的技巧解析  # PHP查找与搜索数组元素方法总结  # 解析php二分法查找数组是否包含某一元素  # 万个  # 是否存在  # 键值  # 组中  # 结束时间  # 还会  # 我们可以  # 第三个  # 会比  # 很低  # 方法来  # 值为  # 提高效率  # 返回值  # 效率高  # color  # ff  # TRUE  # 一般会 


相关文章: ,在苏州找工作,上哪个网站比较好?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  网站网页制作专业公司,怎样制作自己的网页?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  宝塔面板如何快速创建新站点?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  上海网站制作开发公司,上海买房比较好的网站有哪些?  Android滚轮选择时间控件使用详解  平台云上自助建站如何快速打造专业网站?  javascript中的try catch异常捕获机制用法分析  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站主机如何安装配置?新手必看操作指南  如何用PHP快速搭建高效网站?分步指南  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  如何通过WDCP绑定主域名及创建子域名站点?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何在云主机上快速搭建多站点网站?  如何在阿里云ECS服务器部署织梦CMS网站?  如何挑选最适合建站的高性能VPS主机?  建站之星多图banner生成与模板自定义指南  建站主机数据库如何配置才能提升网站性能?  如何快速生成凡客建站的专业级图册?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何用免费手机建站系统零基础打造专业网站?  网站专业制作公司有哪些,做一个公司网站要多少钱?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何快速打造个性化非模板自助建站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何在阿里云部署织梦网站?  如何制作网站标识牌,动态网站如何制作(教程)?  如何在IIS中新建站点并配置端口与IP地址?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何用西部建站助手快速创建专业网站?  如何用y主机助手快速搭建网站?  如何配置IIS站点权限与局域网访问?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何在服务器上配置二级域名建站?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  小型网站建站如何选择虚拟主机?  如何选购建站域名与空间?自助平台全解析  如何设置并定期更换建站之星安全管理员密码?  建站之星代理平台如何选择最佳方案?  如何快速生成ASP一键建站模板并优化安全性?  招贴海报怎么做,什么是海报招贴?  制作宣传网站的软件,小红书可以宣传网站吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。