PHP数组搜索

时间:2010-11-30 14:28:19

标签: php

我正在尝试为网站添加一些快速简单的搜索功能。该网站有一个包含所有商店的XML文件,我想创建一个搜索框,按城镇或邮政编码搜索到用户最近的商店。

我已将所有数据放入数组中,但据我所知,没有办法“搜索”数组(NOT array_search)来检索结果,例如使用MySQL LIKE查询。

肯定有办法吗?在这种情况下,使用MySQL不是一种选择。

5 个答案:

答案 0 :(得分:3)

三个选项:

  • 由于您的源是XML,您可以使用QueryPath或phpQuery过滤初始数据集。
  • 如果MySQL不是一个选项,如果你真的想使用LIKE,你仍然可以使用SQLite内存数据库。
  • 或经过时间考验,最简单:只需手动循环遍历阵列并进行手动比较。

答案 1 :(得分:2)

您可以使用用户定义的回调尝试* array_filter()*。

答案 2 :(得分:2)

我认为你最好的选择是将XML实际加载到DOM对象(DOMDocument或SimpleXML)中,然后使用其XPath inslemntation。它不是SQL,但它比编写自己的算法消耗数组少得多。特别是如果您正在谈论像使用SQL平台那样执行真正的距离计算。

答案 3 :(得分:1)

我认为你正在寻找像LINQ这样的东西,但在PHP环境中。不幸的是我不知道这样的任何解决方案。我能看到的最佳解决方案是使用foreach和您自己的搜索参数进行自定义搜索。或者只是将信息存储在SQL中,避免尝试模拟它。

答案 4 :(得分:0)

您可以尝试这样的事情:

$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
  }
}
相关问题