三元运算符和 GET 条件

Ternary operator and GET condition

我有以下代码:

$currentPage = isset($_GET['page']) ? $_GET['page'] : 1;
    if($currentPage < 1)
    {
        $currentPage = 1;
    }

我想摆脱 if 语句并在一行中完成所有操作。我该如何做到这一点,甚至可以在三元运算符中做到这一点?

为什么不这样做:

$currentPage = max(intval($_GET['page']), 1);

这将筛选出所有垃圾并确保页面值至少为 1。

$currentPage = (isset($_GET['page']) && $_GET['page'] > 1) ? $_GET['page'] : 1;

冒昧调整了一下逻辑。 请注意,这更难阅读,代码通常被阅读的次数多于编写的次数。

并不复杂,只考虑逻辑:

  • $_GET['page'] 设置并且它小于 1 然后使 $currentPage 1
  • 如果不是,使$currentPage等于$_GET['page']

$currentPage = (isset($_GET['page'] && $_GET['page'] < 1) ? 1 : $_GET['page'];

也许 php 的 空合并运算符 可以使您的行更具可读性:

$currentPage = max($_GET["page"] ?? 1, 1);

请记住,单行代码逻辑可能很好,但如果代价是代码难以理解,则最好点击回车按钮。 您可以阅读空合并运算符 here.