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

5年以前  |  阅读数:869 次  |  编程语言:PHP 

判断某字符是否包含与某于数组中,方法有很多,刚学习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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例