简体   繁体   English

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

[英]Possible to compare strings in PHP using a switch statement?

I'm trying to write some PHP code to return a translation based on two parameters: an integer translation id and a two-letters language code. 我正在尝试编写一些PHP代码以返回基于两个参数的翻译:整数翻译ID和两个字母的语言代码。

For this, I nested switch statements. 为此,我嵌套了switch语句。 The outer switch works fine, but the inner switch fails and their default is always returned, whichever the value that the $lang parameter takes. 外部开关工作正常,但是内部开关失败,并且始终返回其默认值,无论$ lang参数采用的值是多少。 In the example below, "Berne" is returned when $lang="de". 在下面的示例中,当$ lang =“ de”时返回“ Berne”。

I checked, that the value of $lang is correct; 我检查了$ lang的值是否正确; it was. 它是。 Casted $lang as (string) to be sure that it is of the correct type. 将$ lang强制转换为(字符串),以确保其类型正确。 Tried enclosing the inner switches between brackets, as well as putting double quotes instead of simple ones. 尝试将内部开关括在方括号之间,并用双引号代替简单的双引号。 Without success. 没有成功。 Here's my code: 这是我的代码:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM