php使用通配符选择哈希

tip*_*ipu 0 php hashmap string-matching

说我有一个hashmap,

$hash = array('fox' => 'some value',
              'fort' => 'some value 2',
              'fork' => 'some value again);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*c B 5

这应该做的伎俩:

$matches = preg_grep('/^for/', array_keys($hash));
Run Code Online (Sandbox Code Playgroud)

而你最终会得到

$matches[0] = 'fort';
$matches[1] = 'fork'
Run Code Online (Sandbox Code Playgroud)

从中可以引用回原始的$ hash数组.