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_flip与isset判断元素是否存在,在10万个元素的数组中比较1000次,运行时间需要约1.2毫秒
因此,对于大数组进行比较,使用array_flip与isset方法会比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小时内与您取得联系。