我想寫一些PHP代碼來返回基於兩個參數的翻譯:整數翻譯ID和雙字母語言代碼。可能使用switch語句在PHP中比較字符串?
對於這一點,我嵌套switch語句。外部開關工作正常,但內部開關失敗,並且總是返回它們的默認值,無論$ lang參數的值如何。在下面的例子中,當$ lang =「de」時返回「Berne」。
我查了一下,是$ LANG的值是正確的;它是。 鑄造$ lang as(字符串)以確保它是正確的類型。 試圖將括號內的內部開關放在括號內,並且用雙引號代替簡單的引號。沒有成功。這裏是我的代碼:
<?php
switch($id) {
case 3:
{
switch((string)$lang) {
case 'de':
$v = 'Bern';
break;
case 'en':
$v = 'Berne';
break;
default:
$v = 'Berne';
}
}
break;
case 4:
{
switch($lang) {
case 'de':
$v = 'Zürich';
break;
case 'en':
$v = 'Zurich';
break;
default:
$v = 'Zurich';
}
}
break;
default:
{
switch($lang) {
case 'de':
$v = 'Genf';
break;
case 'en':
$v = 'Geneva';
break;
default:
$v = 'Genève';
}
}
break;
}
return $v;
?>
把'的var_dump($ LANG)的var_dump($ LANG == '德');'後兩'$ v = '伯爾尼';'並再次檢查。 –
您不妨''echo mb_detect_encoding($ lang)'以確保它使用正確的編碼方式,並且您可能也想'trim($ lang)'。 – frz3993
謝謝。這個問題並不在代碼本身,而在於它被用作MODx內容管理系統的一個片段,它有一個服務器端緩存機制。因此,代碼返回與第一次調用相同的值。我將這些代碼片段解開,解決了這個問題。 – OuzoPower