Эффективность поиска в массиве по сравнению с поиском в тексте .... Что лучше? - PullRequest
2 голосов
/ 13 июня 2011

У меня есть список (целочисленных) идентификаторов, который я храню в виде текста, например

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

, сейчас я работаю с PHP, я хочу проверить, существует ли конкретный идентификатор в этом тексте.У меня есть функция explode , которая может дать мне массив чисел , а затем я могу использовать функцию in_array , в качестве альтернативы я могу просто использовать strpos функция найти в тексте .

так, какой из них будет более эффективным подходящим вам?

Большое спасибочто нашли время прочитать это.

Ответы [ 2 ]

4 голосов
/ 13 июня 2011

Если все, что вам нужно сделать, это найти один идентификатор, то strpos() будет более эффективным, потому что все, что он должен сделать, это найти вхождение id;, тогда как explode() сделает намного большечто, не говоря уже о дорогостоящем звонке на in_array().

3 голосов
/ 13 июня 2011

strpos() довольно быстро. Однако, если вы объедините explode() и array_flip, вы получите массив, в котором все ключи являются вашими идентификаторами, и вы можете просто использовать isset($keys[$id]). Это будет быстрее, так как это прямой поиск в хеш-таблице, но explode + array_flip дорогостоящий, поэтому он того стоит, если вы выполняете много поисков в одних и тех же данных за один запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...