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 循环通过的实体。我几乎可以肯定这是最快的方法。

如果你想让它更快,这取决于你需要运行多少次,以及你的数组将变得多大,trie 结构可能会使它更快。

于 2012-09-27T18:12:10.397 回答