PHP中函数和in_array函数效率问题如何解决

  

PHP中函数和in_array函数效率问题如何解决?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

<强>问题

在一个接口中,发现非常耗时,排查原因发现函数的查找数组中的元素的关键时,效率随着数组变大,耗时增加。特别是大数组时,非常耗时。在函数in_array也有这个问题。

<强>解决办法

采用array_flip翻转后,用收取代替in_array函数,用美元数组(例子)替代函数,这样能解决大数组超时耗时问题

下面是我从PHP官网抄下来的笔记,可以观察这两个方法效率的差异

原网址:https://www.php.net/manual/en/function.in-array.php

如果你# 39;重新处理非常大的二维数组元素(例如20000 +)# 39;进行实质性的年代快得多这样做……
我有一个脚本,该脚本从30 +秒降低到2秒(当狩猎通过50000元素数组50000倍)。
  php记得> & lt; ?
  $=数组数组();
  ($ i=0;i<美元;200000;$我+ +){
  # #随机字符串
  数组美元($ i)=get_rand()。我美元;
  }
  str=美元数组[150000];
  $ time1=microtime(真正的);
  函数(str,数组美元);
  $ time2=microtime(真正的);
  回声& # 39;原始方法:& # 39;。(time2 - time1美元)干净\ n";
  历史问题=美元microtime(真正的);
  数组$ new_array=array_flip ($);
  收取(new_array美元美元(str));
  $ time4=microtime(真正的);
  回声& # 39;新方法:& # 39;。(time4 -历史问题美元);

结果:

原始方法:0.0010008811950684   新方法:0.0069980621337891

循环5000次

$数组=数组();   ($ i=0;i<美元;200000;$我+ +){   # #随机字符串   数组美元($ i)=get_rand()。我美元;   }   str=美元数组[199999];   $ time1=microtime(真正的);   ($ i=0;i<美元;5000;$我+ +){   函数(str,数组美元);   }   $ time2=microtime(真正的);   回声& # 39;原始方法:& # 39;。(time2 - time1美元)干净\ n";   历史问题=美元microtime(真正的);   数组$ new_array=array_flip ($);   ($ i=0;i<美元;5000;$我+ +){   收取(new_array美元美元(str));   }   $ time4=microtime(真正的);   回声& # 39;新方法:& # 39;。(time4 -历史问题美元);

<强>结果:

原始方法:2.9000020027161   新方法:0.008030891418457

感谢各位的阅读!看完上述内容,你们对PHP中函数和in_array函数效率问题如何解决大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。

PHP中函数和in_array函数效率问题如何解决