我的目标是根据数组中变量值的存在来获取语言文件,如果不存在,则用英语替换。下面是我从头开始编写的代码:
if(strpos($trns, $lng) === FALSE) {$trn = 'en';} else {$trn = $lng;}
include_once $trn.'.php';
其中$trns
为包含已有翻译文件语言前缀的数组,$lng
为保存数组中存在时应使用的前缀的变量,$trn
为选定的前缀。
在我看来,在人类语言中,这段代码读起来像,如果$lng
是fr
,但数组中没有fr
,那么使用en
作为$trn
。否则使用fr
。
Print_r($trns)
输出为Array ( [0] => en [1] => de )
。
所以上面的代码成功地使用了en.php文件,如果数组中有en
和$lng = en
,那么de
也是一样的。
但它也使用fr
,尽管事实上没有fr
在数组中,而在这种情况下,它应该用en
代替fr
。
我需要你帮忙追踪我犯的错误。
strpos
不能处理数组。使用in_array
功能
if (!in_array($lng, $trns)) {
$trn = 'en';
} else {
$trn = $lng;
}
include_once $trn.'.php';
还是短
$trn = in_array($lng, $trns) ? $lng: 'en';
include_once $trn.'.php';