查找在数组中定义的子字符串并在PHP中返回密钥

时间:2012-09-27 18:04:41

标签: php arrays string substring string-matching

我编写了一个简单的函数,用于检查给定字符串是否包含带有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;
        }
    }
}

很抱歉,如果之前已经提出此类问题。感谢您的信息。

1 个答案:

答案 0 :(得分:1)

您没有解析整个数组,只是解析foreach循环的实体。我几乎可以肯定这是最快的方法。

如果你想让它更快,取决于你需要多少次运行它,以及你的阵列有多大,trie structure可能会让它更快。