0

假设我有一个哈希图,

$hash = array('fox' => 'some value',
              'fort' => 'some value 2',
              'fork' => 'some value again);

我正在尝试完成自动完成功能。当用户键入“fo”时,我想通过 ajax 从 $hash 中检索 3 个键。当用户键入“for”时,我只想检索键 fort 和 fork。这可能吗?

我在想的是使用二进制搜索来隔离带有“f”的键,而不是蛮力搜索。然后在用户键入查询时继续消除索引。有没有更有效的解决方案?

编辑:关于通配符,我想知道是否有办法做 $hash["f*"],返回所有以 'f' 开头的索引。

4

1 回答 1

5

这应该可以解决问题:

$matches = preg_grep('/^for/', array_keys($hash));

你最终会得到

$matches[0] = 'fort';
$matches[1] = 'fork'

您可以从中引用原始的 $hash 数组。

于 2010-04-09T02:31:32.277 回答