如何在 if else 语句中使用 php 循环

问题描述

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 语句。有没有办法做到这一点?

解决方法

您无需执行 issetempty,因为 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;
}