php中查找一个元素是否在数组中,一共有上面三种做法:
in_array
array_key_exists
array_search
对它们三个做了一个简单的测试:
在数组大小为10000的时候,查找一半数组大小的元素,即5000个
in_array consume time : 8.15333008766s
array_key_exists consume time : 0.0237729549408s
array_search consume time : 8.17325806618s
在数组大小为1000的时候,查找一半数组大小的元素,即500个
in_array consume time : 0.061774969101s
array_key_exists consume time : 0.00311708450317s
array_search consume time : 0.0466430187225s
从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算
数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..)
他们内存使用比值为1:2;
这个和内部实现有关系,实际上在php中第一种和第二种的数据结构类似,都是关联数组