我的目標是根據陣列中的變數值是否存在來獲取語言檔案,如果不存在則用英語替代。以下是我從頭開始寫的代碼:
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。
我需要你的幫助來追蹤我所犯的錯誤。
uj5u.com熱心網友回復:
strpos對陣列不起作用。請使用in_array函式。
if (!in_array($lng, $trns) {
$trn = 'en'/span>;
} else {
$trn = $lng;
}
include_once $trn.' .php';
或更短
$trn = in_array($lng, $trns) ? $lng: 'en';
include_once $trn.' .php';
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316202.html
標籤:
