数组搜索的效率与文本搜索的效率..哪个更好


Efficiency of Searching an Array Vs Searching in Text.... Which is Better?

我有一个(整数)ID列表,我将其存储为文本,如

23;45;67;12;332;783;123;33;15;87;41;422;88;58;

现在我正在使用PHP,我想检查该TEXT中是否已经存在特定的ID,我有explore函数,它可以给我一个数字数组,然后我可以使用in_array功能,或者我可以只使用strpos在TEXT中查找。

那么,根据您的判断,哪一个更有效

非常感谢您抽出时间阅读本文。

如果您只需要查找一个ID,那么strpos()将更高效,因为它所要做的就是查找id;的出现,而explode()将做更多的工作,更不用说对in_array()的昂贵调用了。

strpos()速度相当快。但是,如果将explode()array_flip组合在一起,则会得到一个数组,其中所有的键都是您的id,并且您可以只使用isset($keys[$id])。这会更快,因为这是在哈希表中的直接查找,但爆炸+数组翻转的成本很高,所以只有在一个请求期间对同一数据进行多次查找时才值得。