我有以下代码:
$currentPage = isset($_GET['page']) ? $_GET['page'] : 1;
if($currentPage < 1)
{
$currentPage = 1;
}
我想摆脱if
语句,并在一行中做所有事情。我怎么能这样做,甚至可以在三元运算符中做到这一点?
答案 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的信息。