我有一系列按字母顺序排序的街道名称,这些街道名称是从Web服务收集的。该数组存在于服务器端。在PHP中,如何快速搜索包含子字符串的值的数组?
在客户端,用户开始键入他住的街道名称,AJAX用于返回与部分街道名称最接近的匹配列表,以及数组中接下来的9个街道名称(列表在他打字时更新)。
例如,如果用户键入“人”,我希望的结果是类似以下内容:
- 奥尔巴尼高速公路
- Albens谷
- Alcaston路
- 亚历克斯·伍德博士
- 爱丽丝路
- Allawah的Ct
- 艾伦路
- 阿洛韦PL
- 奥尔伍德大道
- Alola圣
- 阿曼达博士
这是我尝试它:
$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;
}
}
有谁知道还有一个更快的方法?
请注意:我无法控制如何从数据库中获取此列表 - 它来自外部Web服务。
嘛,找出最快的* *的方式,你必须把它基准来确定。但是,如果这是来自外部的web服务,那么建立到web服务的连接将比任何你得到答案的代码慢。 – Gordon 2010-01-21 09:04:55
是的,我已经通过缓存24小时从Web服务器返回的数据。我们市的街道名称一般不会有太大的变化 - 但是有很多发展和新的街道一直在出现,所以24小时看起来好像是一段很长的时间。 – 2010-01-22 00:00:45