根据数组内容选择 PHP 变量的值



我的目标是根据数组中变量值的存在来获取语言文件,如果不存在,则用英语替换。下面是我从头开始编写的代码:

if(strpos($trns, $lng) === FALSE) {$trn = 'en';} else {$trn = $lng;}
include_once $trn.'.php';

其中$trns为包含已有翻译文件语言前缀的数组,$lng为保存数组中存在时应使用的前缀的变量,$trn为选定的前缀。

在我看来,在人类语言中,这段代码读起来像,如果$lngfr,但数组中没有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';

最新更新