ciogao 发表于 2011-11-8 16:33:07

关于in_array() foreach array_search() 的性能对比

对于这几个函数,都可以用于判断某字符是否存在于数组中,群里有人在问,所以做了一个简单的测试。
请看代码。


<?php
/*
*Powered by ciogao@gmail.comQQ 285305740
*/
echo '结论:<br>in_array与array_search效率几乎相同,in_array仅返回真伪,array_search同时返回位置.<br>foreach性能最差<br>';
$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(): http://bbs.phpchina.com/data/attachment/forum/201111/08/161818upw9bpqzws2cbvu2.jpg
foreach(): http://bbs.phpchina.com/data/attachment/forum/201111/08/161908f1o1f1cveukm66af.jpg
array_search(): http://bbs.phpchina.com/data/attachment/forum/201111/08/1619087rcxr2tcr9207ddt.jpg

~夜行侠~ 发表于 2011-11-8 16:36:06

一般内置函数效率都比较高点的吧。
页: [1]
查看完整版本: 关于in_array() foreach array_search() 的性能对比