Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索数组与搜索文本的效率。。。。哪个更好?_Php_Arrays_Search_Text_Performance - Fatal编程技术网

Php 搜索数组与搜索文本的效率。。。。哪个更好?

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

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

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
即使您没有ID
1
,而是有
11
。好的,非常感谢,这可能使我避免了将来的一些麻烦:)谢谢,您的回复给了我一些额外的知识,我可能可以在将来使用。