0

我正在我的 php 应用程序上重建语言系统,以便更轻松地创建翻译。

我做的一件事就是把所有东西都转换成一个大数组 $lang; 这是一个看起来像的例子:

$lang['common:login'] = "Login";
$lang['common:signup'] = "Sign Up";
$lang['index:title'] = "Home Page";
$lang['messages:newmessages'] = "You have %s new messages";

我使用以下代码加载它:

require_once "lang/en/lang.php";

调用 $lang['common:login'] 将毫无问题地 wqork,与我过去所做的其他方式相比,一旦我创建了一个用于加载这些的函数,就会出现问题。

function outputLanguage($tag) {

    global $lang;

    //see if tag exists.
    if (!in_array($tag, $lang)) {
       return $tag." is an invalid language tag.";
    }  else {
       return $lang[$tag];
    }
}

似乎 in_array() 不喜欢使用来自其他来源的数组。

老实说,如果有人犯了错误,我想进行一些验证,那么有人知道一个好的解决方案吗?

谢谢。

4

2 回答 2

3

您需要使用array_key_exists而不是in_array

于 2013-11-14T19:08:51.073 回答
0

您正在寻找数组键,请尝试:

if(!isset($lang[$tag])) {
    return $tag." is an invalid language tag.";
} else {
    return $lang[$tag];
}

或者我会返回false

return isset($lang[$tag]) ? $lang[$tag] : false;
于 2013-11-14T19:11:05.383 回答