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

 更新时间:2015年04月14日 22:39:49   投稿:mdxy-dxy   我要评论
这篇文章主要介绍了php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比,需要的朋友可以参考下

判断某字符是否包含与某于数组中,方法有很多,刚学习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()

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

foreach

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

array_search()

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

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

相关文章

  • 用PHP的反射实现委托模式的讲解

    用PHP的反射实现委托模式的讲解

    今天小编就为大家分享一篇关于用PHP的反射实现委托模式的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP实现的各种进制相互转换功能小工具示例

    PHP实现的各种进制相互转换功能小工具示例

    这篇文章主要介绍了PHP实现的各种进制相互转换功能小工具,涉及php常见的二进制、八进制、十六进制等相互转换操作实现技巧,需要的朋友可以参考下
    2018-03-03
  • php从给定url获取文件扩展名的方法

    php从给定url获取文件扩展名的方法

    这篇文章主要介绍了php从给定url获取文件扩展名的方法,涉及php操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php实现上传图片文件代码

    php实现上传图片文件代码

    在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一。值得高兴的是,在PHP中实现文件上传功能要比在Java、C#等语言中简单得多。下面我们结合具体的代码实例来详细介绍如何通过PHP实现文件上传和多文件上传功能。
    2015-07-07
  • PHP学习笔记(三):数据类型转换与常量介绍

    PHP学习笔记(三):数据类型转换与常量介绍

    这篇文章主要介绍了PHP学习笔记(三):数据类型转换与常量介绍,本文讲解了PHP数据类型相互转换、常量的声明与使用等内容,需要的朋友可以参考下
    2015-04-04
  • php读取mysql乱码,用set names XXX解决的原理分享

    php读取mysql乱码,用set names XXX解决的原理分享

    解决乱码的方法,我们经常使用“set names utf8”,那么为什么加上这句代码就可以解决了呢?下面跟着我一起来深入set names utf8的内部执行原理
    2011-12-12
  • 解析crontab php自动运行的方法

    解析crontab php自动运行的方法

    本篇文章是对crontab php自动运行的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • preg_match_all使用心得分享

    preg_match_all使用心得分享

    preg_match_all 进行全局正则表达式匹配,这篇文章主要介绍下preg_match_all的相关资料,需要的朋友可以参考下
    2014-01-01
  • PHP判断远程图片或文件是否存在的实现代码

    PHP判断远程图片或文件是否存在的实现代码

    本篇文章主要是对PHP判断远程图片或文件是否存在的实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • PHP基于回溯算法解决n皇后问题的方法示例

    PHP基于回溯算法解决n皇后问题的方法示例

    这篇文章主要介绍了PHP基于回溯算法解决n皇后问题的方法,结合实例形式分析了PHP基于回溯算法解决N皇后问题的原理与具体实现技巧,需要的朋友可以参考下
    2017-11-11

最新评论