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函数效率问题如何解决大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。