Php Routing array_key_exists vs foreach

时间:2013-11-04 17:58:41

标签: php foreach routing preg-match

我找到了两种方法,我正在寻找什么样的风格,以减少开销和提高效率。有谁知道什么是最好的?这个项目可能有很多链接并获得大数组。

1

foreach($this->routes as $pattern => $action) {

    if($pattern === $uri) {
        return $action;
    }

    if(preg_match('#^' . $pattern . '$#', $uri, $matched)) {
        return $action;
    }

}

2

if(array_key_exists($uri, $routes)) {
    return $routes[$uri];
}

foreach($this->routes as $pattern => $action) {
    if(preg_match('#^' . $pattern . '$#', $uri, $matched)) {
        return $action;
    }
}

1 个答案:

答案 0 :(得分:0)

array_key_exists应该比循环快得多,因为它只是一个哈希查找而不是顺序搜索。但是,差异可能不会引人注意,因为每当查找失败时,您将进入循环寻找正则表达式匹配。