php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比


Posted in PHP onApril 14, 2015

判断某字符是否包含与某于数组中,方法有很多,刚学习php的新手们估计偏向于使用循环来解决,对于一般的小网站来说,这种解决方案是不会出现什么大问题的。但就性能来说,这种方法不是最好的方法,下面笔者就 foreach,in_array() array_search 这三种方法来比较这三种方法在性能表现上的差异。

<?php
$runtime= new runtime;
$runtime->start();
    $a = 'k';
    $b = array('a','b','c','d','e','f','g','h','i','j','k');

/*
for ($i=0; $i < 100000; $i++) {
    var_dump(in_array($a, $b));    
}
*/

/*
for ($i=0; $i < 100000; $i++) {
    foreach ($b as $key => $value) {
        if ($a == $value) {
            //echo TRUE;
            continue;
        }
    }
}
*/

/*
for ($i=0; $i < 100000; $i++) {
    array_search($a, $b);
}
*/

$runtime->stop();
echo $_b;
echo "执行时间: ".$runtime->spent()." 毫秒";

class runtime{
  var $StartTime = 0;
  var $StopTime = 0;
  function get_microtime(){
    list($usec, $sec) = explode(' ', microtime());
    return ((float)$usec + (float)$sec);
  }
  function start(){
    $this->StartTime = $this->get_microtime();
  }
  function stop(){
    $this->StopTime = $this->get_microtime();
  }
  function spent(){
    return round(($this->StopTime - $this->StartTime) * 1000, 1);
  }
}
?>

以上程序执行时间如下图所示:

in_array()

php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比

foreach

php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比

array_search()

php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比

由上可以大致看出这三种方法在性能上的表现了吧,array_search 和 in_array 表现差不多,foreach 表现最差。

PHP 相关文章推荐
开发大型 PHP 项目的方法
Jan 02 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
浅析PHP Socket技术
Aug 02 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
PHP Reflection API详解
May 12 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
php+redis实现多台服务器内网存储session并读取示例
Jan 12 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
PHP也能干大事 随机函数
Apr 14 #PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 #PHP
微信公众平台之快递查询功能用法实例
Apr 14 #PHP
php生成rss类用法实例
Apr 14 #PHP
php修改上传图片尺寸的方法
Apr 14 #PHP
php动态添加url查询参数的方法
Apr 14 #PHP
php保存任意网络图片到服务器的方法
Apr 14 #PHP
You might like
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
简述Python2与Python3的不同点
2018/01/21 Python
python数据封装json格式数据
2018/03/04 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python调用百度语音识别api
2018/08/30 Python
python实现图片转字符小工具
2019/04/30 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
平面设计岗位职责
2013/12/14 职场文书
交通事故协议书范本
2014/11/18 职场文书
天堂的孩子观后感
2015/06/11 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
学术会议开幕词
2016/03/03 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android