Eficiência de pesquisar uma matriz em busca de texto … Qual é melhor?

Eu tenho uma lista de IDs (inteiros), que eu estou armazenando como texto, como

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

agora eu estou trabalhando com o PHP, eu quero verificar se uma ID específica já existe nesse TEXTO, eu tenho a function de explodir , que pode me dar uma série de números , e então eu posso usar a function in_array , ou eu simplesmente posso usar O strpos funciona para encontrar no texto .

então, qual deles será mais eficiente para você?

Muito obrigado por ter tempo para ler isso.

Se tudo o que você precisa fazer é procurar uma única ID, então strpos() será mais eficiente, porque tudo o que tem a fazer é encontrar uma ocorrência de id; , enquanto explode() fará muito mais do que isso, para não mencionar a chamada dispendiosa para in_array() .

strpos() é muito rápido. No entanto, se você combinar explode() e array_flip , você obtém uma matriz onde todas as chaves são seus IDs e você pode usar isset($keys[$id]) . Isso será mais rápido, uma vez que é uma pesquisa direta em uma tabela de hash, mas o explode + array_flip é caro, por isso vale a pena se você fizer muitas pesquisas nos mesmos dados durante uma solicitação.