使用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

上一篇: Using PHP 5.3 ?: operator

下一篇: ?: operator (the 'Elvis operator') in PHP