2010-11-30 120 views
0

我正在嘗試向站點添加一些快速和簡單的搜索功能。該網站有一個包含所有商店的XML文件,並且我想創建一個搜索框以按鎮或郵編搜索最接近該用戶的商店。PHP數組搜索

我已經把所有的數據放到一個數組中,但據我所知,沒有辦法'搜索'一個數組(不是array_search)來檢索像使用MySQL LIKE查詢的結果。

一定有辦法嗎?在這種情況下使用MySQL不是一個選項。

回答

2

您可以嘗試* array_filter()*與用戶定義的回調。

1

我認爲你正在尋找像LINQ這樣的東西,但在PHP環境中。不幸的是,我不知道這樣的解決方案。我能看到的最佳解決方案是使用foreach和自己的搜索參數進行自定義搜索。或者只是將信息存儲在SQL中,並避免試圖模擬它。

2

我認爲這裏最好的選擇是將XML加載到DOM對象(DOMDocument或SimpleXML)中,然後使用它的XPath impelemntation。它不是SQL,但比編寫自己的算法消耗數組要少很多。特別是如果您正在討論如何使用SQL平臺執行實際距離計算。

+0

當使用XPath小心的命名空間,你通常無法設置默認的命名空間,以便在XPath的標籤已經與XML的默認命名空間前綴(它有一些在該XML中定義)。 – 2010-11-30 15:20:29

3

三個選項:

  • 作爲源是XML,你可以使用的QueryPath或phpQuery過濾初始數據集。
  • 如果MySQL不是一個選項,如果你真的想使用LIKE,你仍然可以使用SQLite內存數據庫。
  • 或者經過時間考驗,最簡單:只需手動循環播放陣列並進行手動比較。
0

你可以嘗試這樣的事:

XPath的
$q = $_GET['search']; 

$file = new DOMDocument(); 
$file->load("filename.xml"); 

$xml = simplexml_import_dom($file); 
foreach($xml->store as $store) 
{ 
    $store_name = $store->name; 
    if($q == $store_name) 
    { 
    //query in your database 
    } 
}