问题描述
if (isset($_GET['language']) && !empty($_GET['language'] && $_SESSION['language'] !== $_GET['language'])) {
if ($_GET['language'] === 'en') {
$_SESSION['language'] = 'en';
} elseif ($_GET['language'] === 'ar') {
$_SESSION['language'] = 'ar';
} elseif ($_GET['language'] === 'de') {
$_SESSION['language'] = 'de';
} else {
$_SESSION['language'] = $default_language;
}
}
我只想循环 elseif 语句。有没有办法做到这一点?
解决方法
您无需执行 isset
和 empty
,因为 empty
会为您执行此操作。
这还会检查语言是否属于特定语言之一(使用 in_array
),如果不是,则使用默认语言...
if (!empty($_GET['language']) && $_SESSION['language'] !== $_GET['language']) {
$_SESSION['language'] = in_array($_GET['language'],['en','ar','de'])
? $_GET['language'] : $default_language;
}
,
这里不需要循环。如果您打算将可用语言列入白名单,则将列表放入数组中并使用 in_array()
:
$languages = ['ar','de','en'];
if (isset($_GET['language']) && in_array($_GET['language'],$languages)) {
$_SESSION['language'] = $_GET['language'];
} else {
$_SESSION['language'] = $default_language;
}