三元运算符和 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.
我有以下代码:
$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.