确定大海捞针的最快方法

时间:2015-02-22 22:02:12

标签: php zend-framework routes

我有我的请求URI:

string '/admin' (length=16)

我有一系列语言环境代码:

array (size=2)
 'US' => string 'en_US' (length=5)
 'FR' => string 'fr_FR' (length=5)

我正在寻找的是确定请求URI没有提供的数组中的区域设置代码。

如果没有,我需要在单词admin之前注入一个区域代码,所以它看起来如下:/en_US/admin

处理此任务的最快方法是什么?我需要针对大量语言环境的快速搜索方法,然后在请求URI的开头注入语言环境的某种方式

1 个答案:

答案 0 :(得分:2)

你可以这样做:

$uri_splitup = explode('/', $request_uri)
if (in_array($uri_splitup[0], $locales)) {
    // localised URI
} else {
    // not-localised URI
}

使用explode(),您可以使用斜杠拆分请求URI。它返回一个数组。之后,使用in_array(),检查URI的第一部分是否存在于具有区域设置的数组的值中。

explode()的时间复杂度可以被认为是常量,因为您的URI可能总是具有或多或少相同的长度。此外,这部分代码在正常长度上不会花费太多时间。 in_array()的时间复杂度是 O(n),其中 n 是数组中元素的数量。您无法在未排序的数组上获得更快的搜索算法。