我有我的请求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的开头注入语言环境的某种方式
答案 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 是数组中元素的数量。您无法在未排序的数组上获得更快的搜索算法。