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中第一种和第二种的数据结构类似,都是关联数组