У меня есть список (integer) ID, который я храню как текст, например
23;45;67;12;332;783;123;33;15;87;41;422;88;58;
теперь я работаю с PHP, я хочу проверить, существует ли уже определенный идентификатор в этом ТЕКСТе, у меня есть функция explode , которая может дать мне массив чисел , а затем я могу использовать функцию in_array , иначе я могу просто использовать функцию strpos найти в тексте .
так какой из них будет более эффективным для вас?
Большое спасибо за то, что нашли время, чтобы прочитать это.
Если все, что вам нужно сделать, это найти один идентификатор, то strpos()
будет более эффективным, потому что все, что ему нужно сделать, это найти вхождение id;
, тогда как explode()
будет делать гораздо больше, не говоря уже о дорогостоящем вызове in_array()
.
strpos()
довольно быстро. Однако, если вы комбинируете array_flip
explode()
и array_flip
, вы получаете массив, где все ключи являются вашими идентификаторами, и вы можете просто использовать isset($keys[$id])
. Это будет быстрее, так как это прямой поиск в хеш-таблице, но explode + array_flip являются дорогостоящими, так что это стоит того, если вы делаете много поисков в одних и тех же данных во время одного запроса.