php使用通配符选择哈希

时间:2010-04-09 02:09:57

标签: php hashmap string-matching

假设我有一个hashmap,

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

我正在尝试完成自动填充功能。当用户键入'fo'时,我想通过ajax从$ hash中检索3个键。当用户输入'for'时,我想只检索要塞和分叉的密钥。这可能吗?

我在想的是使用二进制搜索将键与'f'隔离,而不是使用暴力搜索。然后在用户输入查询时继续删除索引。对此有更有效的解决方案吗?

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

1 个答案:

答案 0 :(得分:5)

这应该可以解决问题:

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

你最终会

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

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