我有一个按字母顺序排列的街道名称数组,这些名称是通过网络服务获取的。该数组存在于服务器端。
在客户端,用户开始输入他所住街道的名称,并使用AJAX返回与部分街道名称最接近的匹配项列表,以及数组中接下来的9个街道名称(在用户输入时更新列表)。
例如,如果用户键入“al”,我期望结果类似于以下内容:
- Albany Hwy - Albens Vale - Alcaston Rd - Alex Wood Dr - Alice Rd - Allawah Ct - Allen Rd - Alloway Pl - Allwood Av - Alola St - Amanda Dr 这是我的尝试:
在客户端,用户开始输入他所住街道的名称,并使用AJAX返回与部分街道名称最接近的匹配项列表,以及数组中接下来的9个街道名称(在用户输入时更新列表)。
例如,如果用户键入“al”,我期望结果类似于以下内容:
- Albany Hwy - Albens Vale - Alcaston Rd - Alex Wood Dr - Alice Rd - Allawah Ct - Allen Rd - Alloway Pl - Allwood Av - Alola St - Amanda Dr 这是我的尝试:
$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;
}
}
还有其他人知道更快的方法吗?
请注意:我无法控制此列表从数据库中获取的方式-它来自外部网络服务。