全网整合营销服务商

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

免费咨询热线: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  # 一般会 


相关文章: 独立制作一个网站多少钱,建立网站需要花多少钱?  ,sp开头的版面叫什么?  建站主机选购指南:核心配置与性价比推荐解析  如何用PHP快速搭建高效网站?分步指南  如何在云指建站中生成FTP站点?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站之星备案流程有哪些注意事项?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何用低价快速搭建高质量网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  网站制作报价单模板图片,小松挖机官方网站报价?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  如何在西部数码注册域名并快速搭建网站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何在IIS中新建站点并解决端口绑定冲突?  如何挑选最适合建站的高性能VPS主机?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何高效利用200m空间完成建站?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何选择高性价比服务器搭建个人网站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  南京网站制作费用,南京远驱官方网站?  实例解析Array和String方法  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  建站之星logo尺寸如何设置最合适?  如何在Windows环境下新建FTP站点并设置权限?  建站之星后台管理如何实现高效配置?  Android自定义listview布局实现上拉加载下拉刷新功能  建站之星如何配置系统实现高效建站?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  北京专业网站制作设计师招聘,北京白云观官方网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何快速打造个性化非模板自助建站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  宝塔面板如何快速创建新站点?  如何确认建站备案号应放置的具体位置?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  *服务器网站为何频现安全漏洞?  公司网站制作价格怎么算,公司办个官网需要多少钱?  北京网站制作网页,网站升级改版需要多久?  专业网站建设制作报价,网页设计制作要考什么证?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  定制建站流程步骤详解:一站式方案设计与开发指南  宝塔新建站点为何无法访问?如何排查? 

您的项目需求

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