可以使用switch语句比较PHP中的字符串吗?

时间:2015-08-30 16:00:02

标签: php nested switch-statement string-comparison

我正在尝试编写一些PHP代码来返回基于两个参数的翻译:整数翻译ID和双字母语言代码。

为此,我嵌套了switch语句。外部开关工作正常,但内部开关失败并且始终返回其默认值,无论$ lang参数采用哪个值。在下面的示例中,当$ lang =“de”时返回“Berne”。

我检查过,$ lang的值是正确的;它是。 将$ lang转换为(字符串)以确保它的类型正确。 尝试将括号内的内部开关括起来,并使用双引号而不是简单的引号。没有成功。这是我的代码:

<?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 个答案:

答案 0 :(得分: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;
?>