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

这篇文章主要介绍了php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比,需要的朋友可以参考下。

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

  1. <?php
  2. $runtime= new runtime;
  3. $runtime->start();
  4. $a = 'k';
  5. $b = array('a','b','c','d','e','f','g','h','i','j','k');
  6. /*
  7. for ($i=0; $i < 100000; $i++) {
  8. var_dump(in_array($a, $b));
  9. }
  10. */
  11. /*
  12. for ($i=0; $i < 100000; $i++) {
  13. foreach ($b as $key => $value) {
  14. if ($a == $value) {
  15. //echo TRUE;
  16. continue;
  17. }
  18. }
  19. }
  20. */
  21. /*
  22. for ($i=0; $i < 100000; $i++) {
  23. array_search($a, $b);
  24. }
  25. */
  26. $runtime->stop();
  27. echo $_b;
  28. echo "执行时间: ".$runtime->spent()." 毫秒";
  29. class runtime{
  30. var $StartTime = 0;
  31. var $StopTime = 0;
  32. function get_microtime(){
  33. list($usec, $sec) = explode(' ', microtime());
  34. return ((float)$usec + (float)$sec);
  35. }
  36. function start(){
  37. $this->StartTime = $this->get_microtime();
  38. }
  39. function stop(){
  40. $this->StopTime = $this->get_microtime();
  41. }
  42. function spent(){
  43. return round(($this->StopTime - $this->StartTime) * 1000, 1);
  44. }
  45. }
  46. ?>