【问题标题】:How can I use php loop inside if else statement如何在 if else 语句中使用 php 循环
【发布时间】:2021-09-05 13:09:32
【问题描述】:
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 语句。有没有办法做到这一点?

【问题讨论】:

  • 如果设置了$_GET['language'],你可以设置$_SESSION['language'] = $_GET['language']。不需要很多ifs。如果您想确保 $_GET['language'] 只能采用某些值,请使用 in_​array
  • 同意,你的例子是一大堆多余的硬编码

标签: php loops for-loop if-statement foreach


【解决方案1】:

您无需执行 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;
}

【讨论】:

  • 需要尽快关闭empty。 !empty($_GET['language'])
【解决方案2】:

这里不需要循环。如果您打算将可用语言列入白名单,则将列表放入数组中并使用in_array():

$languages = ['ar','de','en'];
if (isset($_GET['language']) && in_array($_GET['language'], $languages)) {
    $_SESSION['language'] = $_GET['language'];
} else {
    $_SESSION['language'] = $default_language;
}

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2012-09-02
    • 2014-09-15
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2017-02-17
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多