全网整合营销服务商

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

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


相关文章: 制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星备案是否影响网站上线时间?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  长沙做网站要多少钱,长沙国安网络怎么样?  如何在云虚拟主机上快速搭建个人网站?  建站之星安装步骤有哪些常见问题?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何配置支付宝与微信支付功能?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  济南网站建设制作公司,室内设计网站一般都有哪些功能?  php json中文编码为null的解决办法  如何选择最佳自助建站系统?快速指南解析优劣  Python文件管理规范_工程实践说明【指导】  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  微课制作网站有哪些,微课网怎么进?  建站之星如何开启自定义404页面避免用户流失?  如何快速上传建站程序避免常见错误?  制作农业网站的软件,比较好的农业网站推荐一下?  成都网站制作报价公司,成都工业用气开户费用?  h5在线制作网站电脑版下载,h5网页制作软件?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  建站主机是否属于云主机类型?  如何通过虚拟主机快速完成网站搭建?  如何获取PHP WAP自助建站系统源码?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  5种Android数据存储方式汇总  如何制作算命网站,怎么注册算命网站?  网站制作员失业,怎样查看自己网站的注册者?  建站之星后台密码如何安全设置与找回?  建站10G流量真的够用吗?如何应对访问高峰?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何通过FTP服务器快速搭建网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何快速查询域名建站关键信息?  如何通过建站之星自助学习解决操作问题?  如何在香港服务器上快速搭建免备案网站?  公众号网站制作网页,微信公众号怎么制作?  如何通过IIS搭建网站并配置访问权限?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何高效配置IIS服务器搭建网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何设置并定期更换建站之星安全管理员密码?  如何在七牛云存储上搭建网站并设置自定义域名? 

您的项目需求

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