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 に答える