0

特定の文字列に定義済みの部分文字列が含まれているかどうかを確認しstripos()、部分文字列のキーを返す単純な関数を作成しました。実際には、スクリプトの他の部分でキー文字列を使用する必要があります。

現在、配列全体を解析していて、一致が見つかったときに結果を返すため、これを行うためのより良い方法があるかどうか疑問に思っています。したがって、配列が大きくなると、遅くなります。

$needles = array(
    'a' => 'ab',
    'b' => 'bc',
    'c' => 'cd',
    'd' => 'de',
    'e' => 'ef'
);  
echo get_key('cd', $needles) . '<br />';
echo get_key('my_de_string', $needles) . '<br />';
echo get_key('e_ab', $needles) . '<br />';

function get_key($mystring, $needles) {
    foreach ($needles as $key => $needle)
    {
        if ((stripos($mystring, $needle)) !== false) 
        {
            return $key;
        }
    }
}

以前にも同じような質問がありましたら申し訳ありません。情報ありがとうございます。

4

1 に答える 1

1

配列全体を解析するのではなく、foreach がループするエンティティのみを解析します。これがこれを行うための最速の方法であるとほぼ確信しています。

これを何回実行する必要があるか、および配列がどれだけ大きくなるかに応じて、より速くしたい場合は、トライ構造がおそらくこれをより速くします。

于 2012-09-27T18:12:10.397 に答える