php - 在 PHP 中,在数组中搜索包含子字符串的值的快速方法是什么?

标签 php ajax string search arrays

我有一组从 Web 服务中收集的按字母顺序排序的街道名称。该数组存在于服务器端。

在客户端,用户开始输入他居住的街道名称,AJAX 用于返回与部分街道名称最接近匹配的列表,加上数组中接下来的 9 个街道名称(列表在他打字时更新)。

例如,如果用户键入“al”,我希望结果如下所示:

  • 奥尔巴尼高速公路
  • 阿尔本斯谷
  • 阿尔卡斯顿路
  • 亚历克斯伍德博士
  • 爱丽丝路
  • 阿拉瓦CT
  • 艾伦路
  • 允许 Pl
  • 奥尔伍德大道
  • 阿罗拉街
  • 阿曼达博士

这是我的尝试:

$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;
  }
}

还有其他人知道更快的方法吗?

请注意:我无法控制如何从数据库中获取此列表 - 它来自外部网络服务。

最佳答案

使用preg_grep() :

$matches = preg_grep('/al/', $streetNames);

注意:像您这样的方法将是暴力搜索。如果您要搜索大量名称(数十万)或搜索大量次数,那么您可能需要更好的东西。然而,对于小型数据集,这很好。

关于php - 在 PHP 中,在数组中搜索包含子字符串的值的快速方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2107948/

相关文章:

c - 使用 strtok 函数删除制表符空间

php - 在php中将3个表合并到一个选择查询中

php - 根据列值更新不同表中的不同列

php - SQL SELECT 和 PHP 检索使用单表 VS 连接两个表的速度?

php - PHP中的mysql_fetch_array()错误

javascript - 根据下拉选择更改图像

jquery - 如何在 xml 中检索跨源火山数据?

C++ string.replace 生成 "No matching function for call"错误

Ruby:如何剥离字符串并获取删除的空格?

Javascript Ajax 前端调用 asp.net C# 后端