Tengo una variedad de nombres de calles ordenados alfabéticamente que he recopilado de un servicio web. Esta matriz existe en el lado del servidor.En PHP, ¿qué es una forma rápida de buscar en una matriz los valores que contienen una subcadena?
En el lado del cliente, un usuario empieza a escribir el nombre de la calle en la que vive en y AJAX se utiliza para devolver una lista de la coincidencia más cercana a la parte del nombre de la calle, además de los próximos 9 nombres de las calles de la matriz (el la lista se actualiza mientras él está escribiendo).
Por ejemplo, si el usuario ha escrito "al", que sería de esperar que los resultados sean algo como lo siguiente:
- Albany Hwy
- Albens Vale
- Alcaston Rd
- Alex Wood Dr.
- Alice Rd
- Allawah Ct
- Allen Rd
- Alloway Pl
- Allwood Av
- Alola St
- Amanda Dr
Este es mi intento en la que:
$matches = array();
for($i = 0; $i < count($streetNames); $i++)
{
if((stripos($streetNames, $input) === 0 && count($matches) == 0) || count($matches) < 10){
$matches[] = $streetNames[$i];
} else {
break;
}
}
¿Alguien más sabe una manera más rápida?
Tenga en cuenta: No tengo ningún control sobre cómo se obtiene esta lista de la base de datos - que es de un servicio web externo.
Bueno, a averiguar el más rápido * * manera, tendría que establecer criterios de referencia a estar seguro. Pero si esto proviene de un servicio web externo, diría que construir la conexión al servicio web será más lento que cualquier código que obtendría para obtener respuestas. – Gordon
Sí, lo he solucionado guardando en caché los datos devueltos del servidor web durante 24 horas. Los nombres de las calles en nuestro municipio generalmente no cambian mucho, pero hay un gran desarrollo y nuevas calles que aparecen todo el tiempo, por lo que 24 horas parece una buena cantidad de tiempo. –