使用PHP 5.3?:运算符

Isi*_*sis 5 php php-5.3

有了这个测试页面:

$page   = (int) $_GET['page'] ?: '1';
echo $page;
Run Code Online (Sandbox Code Playgroud)

我不明白页面未定义时我得到的输出:

Request   Result
?page=2   2
?page=3   3
?page=    1
?         error: Undefined index page
Run Code Online (Sandbox Code Playgroud)

为什么出现错误信息?这是PHP 5.3; 为什么它不回应"1"?

Fel*_*ing 12

正确的方式(在我看来)将是:

$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
Run Code Online (Sandbox Code Playgroud)

即使您使用了新样式,也会出现问题?page=0(0评估为false)."新"并不总是更好......你必须知道何时使用它.

  • 投票的人至少可以解释*为什么*.@Isis:是的,它们是可选的,但它们可以使代码更容易阅读...... (2认同)
  • @Isis:只需添加另一个测试:`(isset($ _ GET ['page'])&& $ _GET ['page']> 0)?$ _GET ['page']:1`(现在括号看上去很好,是吗?)) (2认同)