Вложенный — Можно ли сравнивать строки в PHP с помощью оператора switch?

Я пытаюсь написать PHP-код для возврата перевода на основе двух параметров: целочисленного идентификатора перевода и двухбуквенного кода языка.

Для этого я вложил операторы switch. Внешний переключатель работает нормально, но внутренний переключатель дает сбой, и их значение по умолчанию всегда возвращается, независимо от значения, которое принимает параметр $ lang. В приведенном ниже примере возвращается «Berne», когда $ lang = «de».

Я проверил, что значение $ lang верное; это было.
Применили $ lang as (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;
?>

1

Решение

//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;
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]