使用in_array()对目标数组$arr频繁搜索时,效率是非常低下,针对这种case, 可以使用array_flip()和isset()进行优化;定义目标数组的长度为n, 搜索次数为m,假设m和n均为一个较大的数据,否则也没有优化的必要
具体的做法时,首先使用array_flip()函数交换数组中的键和值; 然后使用isset进行判断;
原理:in_array()做数据查找时是对数组的一次遍历,直至找到要查找的值,并返回key, 时间复杂度是O(mn); 频繁调用即频繁遍历,效率非常低下;使用array_flip()对目标数组进行处理后,由于数组的键是放在Hash表的key中的,Hash遍历会根据键的哈希值去查找,效率非常高,时间复杂度为O(n); 测试代码如下:
function getMillisecond(){
list($t1,