我有一个(整数)ID的列表,我将其存储为文本,例如:
23;45;67;12;332;783;123;33;15;87;41;422;88;58;
我现在正在使用PHP技术,想要检查某个ID是否已存在于TEXT中。我有一个名为explode的函数,它可以给我提供一个数字数组,然后我可以使用in_array函数,或者直接使用strpos函数来在文本中查找。
据你看,哪一种方法会更有效呢?
感谢您抽出时间来阅读这篇文章。
我有一个(整数)ID的列表,我将其存储为文本,例如:
23;45;67;12;332;783;123;33;15;87;41;422;88;58;
我现在正在使用PHP技术,想要检查某个ID是否已存在于TEXT中。我有一个名为explode的函数,它可以给我提供一个数字数组,然后我可以使用in_array函数,或者直接使用strpos函数来在文本中查找。
据你看,哪一种方法会更有效呢?
感谢您抽出时间来阅读这篇文章。
strpos()
会更加高效,因为它只需要查找一个id;
的出现,而explode()
则需要做更多的工作,更不用说昂贵的in_array()
调用了。strpos()
会快得多。但是请考虑在字符串前加上 ;
前缀,这样您就可以搜索 ;id;
,否则即使您没有ID 1
,也会匹配 1;
,并且有 11
。 - ridstrpos()
非常快速。但是,如果你同时使用explode()
和array_flip
,你会得到一个数组,其中所有的键都是你的ID,并且你只需要使用isset($keys[$id])
。这样会更快,因为它是直接在哈希表中查找,但是explode()
+ array_flip()
的成本很高,所以只有在同一请求期间对相同数据进行多个查找时才值得这样做。