我正在嘗試向站點添加一些快速和簡單的搜索功能。該網站有一個包含所有商店的XML文件,並且我想創建一個搜索框以按鎮或郵編搜索最接近該用戶的商店。PHP數組搜索
我已經把所有的數據放到一個數組中,但據我所知,沒有辦法'搜索'一個數組(不是array_search)來檢索像使用MySQL LIKE查詢的結果。
一定有辦法嗎?在這種情況下使用MySQL不是一個選項。
我正在嘗試向站點添加一些快速和簡單的搜索功能。該網站有一個包含所有商店的XML文件,並且我想創建一個搜索框以按鎮或郵編搜索最接近該用戶的商店。PHP數組搜索
我已經把所有的數據放到一個數組中,但據我所知,沒有辦法'搜索'一個數組(不是array_search)來檢索像使用MySQL LIKE查詢的結果。
一定有辦法嗎?在這種情況下使用MySQL不是一個選項。
您可以嘗試* array_filter()*與用戶定義的回調。
我認爲你正在尋找像LINQ這樣的東西,但在PHP環境中。不幸的是,我不知道這樣的解決方案。我能看到的最佳解決方案是使用foreach和自己的搜索參數進行自定義搜索。或者只是將信息存儲在SQL中,並避免試圖模擬它。
我認爲這裏最好的選擇是將XML加載到DOM對象(DOMDocument或SimpleXML)中,然後使用它的XPath impelemntation。它不是SQL,但比編寫自己的算法消耗數組要少很多。特別是如果您正在討論如何使用SQL平臺執行實際距離計算。
三個選項:
你可以嘗試這樣的事:
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
}
}
當使用XPath小心的命名空間,你通常無法設置默認的命名空間,以便在XPath的標籤已經與XML的默認命名空間前綴(它有一些在該XML中定義)。 – 2010-11-30 15:20:29