我正在尝试编写一些PHP代码来返回基于两个参数的翻译:一个整数翻译id和两个字母的语言代码。
为此,我嵌套了switch语句。外部开关工作正常,但内部开关失败,并且总是返回它们的默认值,无论$lang参数取的值是什么。在下面的示例中,当$lang="de"时返回"Berne"。
我检查了,$lang的值是正确的;这是。将$lang转换为(string)以确保它是正确的类型。尝试将内部开关括在括号之间,以及使用双引号而不是简单的双引号。没有成功。下面是我的代码:
<?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;
?>
//I don't what error you are getting when i am testing your code its working perfectly you can also see
<?php
$id = 4;
$lang="de";
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 = 'Zurich1';
break;
case 'en':
$v = 'Zurich2';
break;
default:
$v = 'Zurich3';
}
}
break;
default:
{
switch($lang) {
case 'de':
$v = 'Genf';
break;
case 'en':
$v = 'Geneva';
break;
default:
$v = 'Genève';
}
}
break;
}
echo $v;
?>