我正在尝试向站点添加一些快速和简单的搜索功能。该网站有一个包含所有商店的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