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?