三元运算符和GET条件

时间:2017-10-06 19:53:10

标签: php ternary-operator

我有以下代码:

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

我想摆脱if语句,并在一行中做所有事情。我怎么能这样做,甚至可以在三元运算符中做到这一点?

4 个答案:

答案 0 :(得分:5)

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

采取自由来调整逻辑。 请注意,这一点更难以阅读,并且代码通常比书面阅读更频繁。

答案 1 :(得分:4)

它并不复杂,只需考虑逻辑:

  • 设置$_GET['page']并且小于1,然后生成$currentPage 1
  • 如果没有,请$currentPage等于$_GET['page']
$currentPage = (isset($_GET['page'] && $_GET['page'] < 1) ? 1 : $_GET['page'];

答案 2 :(得分:2)

为什么不这样做:

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

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

答案 3 :(得分:0)

也许php的 null合并运算符可能会让你的行更具可读性:

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

请记住,拥有单行代码逻辑可能会很好,但如果价格是难以理解的代码,那么最好点击输入按钮。 您可以阅读有关空合并运算符here的信息。