我有一系列按字母順序排序的街道名稱,這些街道名稱是從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