使用PHP 5.3?:运算符
有了这个测试页面:
$page = (int) $_GET['page'] ?: '1';
echo $page;
我不明白当页面未定义时我得到的输出:
Request Result
?page=2 2
?page=3 3
?page= 1
? error: Undefined index page
为什么错误信息? 它是PHP 5.3; 为什么不回显“1”?
正确的方式(在我看来)是:
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
即使你使用了新的风格,你也会遇到?page=0
(因为0
评估为false)。 “新”并不总是更好......你必须知道何时使用它。
不幸的是,您不能将其用于您想要使用它的目的:
表达式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr3。
所以你仍然必须使用isset或empty() - ?:
操作符不包含isset检查。 你需要使用的是:
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;
为了完整性,另一种实现方法是拉运营商级别:
$page = (int)$_GET["page"] or $page = 1;
许多人认为这是不可读的,尽管它比isset()结构更短。
或者,如果您正在使用输入对象或任何其他实用程序类:
$page = $_GET->int->default("page", 1);
链接地址: http://www.djcxy.com/p/1737.html