How to simplify this php switch statement?

php, switch-statement

Solution

You can do this:

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';
}

Or you use an array and use `in_array` to see if the value is in the 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';
}

You even could omit `en` in both cases since it’s the default.

Problem

I would like to change this: ``` // 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'; } ``` into something like this: ``` //include file for final output include_once 'languages/lang.'.$_SESSION['lang'].'php; ``` (I think the `$lang_file` variable becomes redundant if I do the include-final-output-thing above) So that I can skip the whole `switch` part. I tried other combinations but they don't seem to work. Any suggestions?

Original source