如何简化这个php switch语句?

ale*_*nco 4 php switch-statement

我想改变这个:

// use appropiate lang.xx.php file according to the value of the $lang
switch ($_SESSION['lang']) {
case 'en':
 $lang_file = 'lang.en.php';
 break;

case 'es':
 $lang_file = 'lang.es.php';
 break;

case 'zh-tw':
 $lang_file = 'lang.zh-tw.php';
 break;

case 'zh-cn':
 $lang_file = 'lang.zh-cn.php';
 break;

default:
 $lang_file = 'lang.en.php';
}
Run Code Online (Sandbox Code Playgroud)

进入这样的事情:

//include file for final output
 include_once 'languages/lang.'.$_SESSION['lang'].'php;
Run Code Online (Sandbox Code Playgroud)

($lang_file如果我执行上面的include-final-output-thing,我认为变量会变得多余)

所以我可以跳过整个switch部分.我尝试过其他组合,但它们似乎不起作用.有什么建议?

Gum*_*mbo 17

你可以这样做:

switch ($_SESSION['lang']) {
case 'en':
case 'es':
case 'zh-tw':
case 'zh-cn':
    $lang_file = 'lang.'.$_SESSION['lang'].'.php';
    break;

default:
    $lang_file = 'lang.en.php';
}
Run Code Online (Sandbox Code Playgroud)

或者您使用数组并使用in_array以查看值是否在数组中:

$languages = array('en', 'es', 'zh-tw', 'zh-cn');
if (in_array($_SESSION['lang'], $languages)) {
    $lang_file = 'lang.'.$_SESSION['lang'].'.php';
} else {
    $lang_file = 'lang.en.php';
}
Run Code Online (Sandbox Code Playgroud)

你甚至可以省略en两种情况,因为它是默认值.