php - 如何简化这个php switch语句?

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

像这样:

//include file for final output
 include_once 'languages/lang.'.$_SESSION['lang'].'php;

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

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

最佳答案

你可以这样做:

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

或者你使用数组并使用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';
}

您甚至可以在这两种情况下省略 en,因为它是默认值。

关于php - 如何简化这个php switch语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455969/

相关文章:

php - 查询不会插入数据库。 (正确的凭证)

c# - .NET 3.5CF WebRequest 到 Slim Framework

PHP:何时使用类上的 namespace 进行分组?

java 为案例中未使用的其余索引切换默认值

javascript - PHP 无法正确接收我表单中的数据

php - 使用 laravel scout 和 tntsearch 调用未定义的方法 Illuminate\Database\Eloquent\Builder::search()

iPhone通过左右滑动手指切换 View ,与stock app类似

javascript - 我想向我的 switch 语句添加更多选项。有什么方法可以实现这一点吗?

c# - 相同的情况

c# - 使用 goto 大小写(变量);在 C# 开关中