[英]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.