我的目标是根据数组中变量值的存在来获取语言文件,如果不是,则用英语替换。这是我从头开始编写的代码:
if(strpos($trns, $lng) === FALSE) {$trn = 'en';} else {$trn = $lng;}
include_once $trn.'.php';
其中$trns
是具有现有翻译文件的语言前缀的数组,$lng
是保存前缀的变量,如果它存在于数组中并且$trn
是选定的前缀,则应使用该前缀。
在我看来,在人类语言中,这段代码读起来就像case $lng
isfr
但是fr
数组中没有然后使用en
for $trn
。否则使用fr
.
Print_r($trns)
输出是Array ( [0] => en [1] => de )
。
所以上面的代码成功地使用了 en.php 文件,以防en
数组中存在 和$lng = en
,对于de
.
但是,它也使用fr
在尽管事实上没有fr
在数组中,而应该替代fr
与en
在这种情况下。
我迫切需要您的帮助来跟踪我所犯的错误。
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';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句