Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to simplify this php switch statement?

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?

like image 254
alexchenco Avatar asked Nov 30 '22 06:11

alexchenco


1 Answers

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.

like image 66
Gumbo Avatar answered Dec 12 '22 06:12

Gumbo