Php 搜索数组与搜索文本的效率。。。。哪个更好?
我有一个(整数)ID的列表,我将其存储为文本,如Php 搜索数组与搜索文本的效率。。。。哪个更好?,php,arrays,search,text,performance,Php,Arrays,Search,Text,Performance,我有一个(整数)ID的列表,我将其存储为文本,如 23;45;67;12;332;783;123;33;15;87;41;422;88;58; 现在我正在使用PHP,我想检查文本中是否已经存在特定ID,我有explode函数,它可以给我一个数字数组,然后我可以使用in_array函数,或者,我可以使用strpos功能在文本中查找 那么,对你来说,哪一个更有效呢 非常感谢您花时间阅读此文章。如果您所要做的只是查找单个ID,那么strpos()将更加高效,因为它所要做的就是查找ID的出现,而exp
23;45;67;12;332;783;123;33;15;87;41;422;88;58;
现在我正在使用PHP,我想检查文本中是否已经存在特定ID,我有explode函数,它可以给我一个数字数组,然后我可以使用in_array函数,或者,我可以使用strpos功能在文本中查找
那么,对你来说,哪一个更有效呢
非常感谢您花时间阅读此文章。如果您所要做的只是查找单个ID,那么
strpos()
将更加高效,因为它所要做的就是查找ID的出现
,而explode()
的作用远不止于此,更不用说调用in_array()
strpos()
的代价非常高。但是,如果您将explode()
和array\u flip
组合在一起,您将得到一个数组,其中所有键都是您的id,您只需使用isset($keys[$id])
。这会更快,因为它是哈希表中的直接查找,但explode+array_flip的成本很高,因此只有在一个请求中对同一数据进行多次查找时才值得。你是否尝试过测量差异?抱歉,我现在认为我应该尝试,但没有。我刚刚尝试联机查找任何可用的结果。这还取决于您是将一个这样的字符串搜索整数多次,还是只搜索每个字符串一次。我将只搜索该字符串一次。此外,应该考虑的是,一个数组消耗的内存量比一个字符串使用的内存量大得多。谢谢,所以strpos是我的答案,因为我只搜索一次。@Pheonix,当然,如果您只需要查找一次,strpos()
要快得多。但是,请考虑用<代码>预置字符串;<代码>以便您可以搜索;身份证代码>,否则您将匹配1
即使您没有ID1
,而是有11
。好的,非常感谢,这可能使我避免了将来的一些麻烦:)谢谢,您的回复给了我一些额外的知识,我可能可以在将来使用。