Php 带强制转换的零合并算子
我已经升级到PHP7,并开始使用null coalesce操作符来转换如下内容Php 带强制转换的零合并算子,php,php-7,null-coalescing-operator,Php,Php 7,Null Coalescing Operator,我已经升级到PHP7,并开始使用null coalesce操作符来转换如下内容 $email = isset($_SESSION['email']) ? $_SESSION['email'] : ''; 到 但如果我也在选演员的话,我想不出该怎么做。例如,用于旧语句的 $id = isset($_GET['id']) ? (int) $_GET['id'] : 0; 我会这样想 $id = (int) $_GET['id'] ?? 0; 应该可以工作,但从某种意义上说,如果未设置$\u G
$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
到
但如果我也在选演员的话,我想不出该怎么做。例如,用于旧语句的
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
我会这样想
$id = (int) $_GET['id'] ?? 0;
应该可以工作,但从某种意义上说,如果未设置$\u GET['id']
,则$id
解析为0
,但我收到了通知
注意:第2行test.php中未定义的index:id
(int)
强制转换优先于??
运算符,因此使用括号:
$id = (int) ($_GET['id'] ?? 0);
关联性是您的问题:
$id=(int)($GET['id']??0)如果你不想简单地考虑运算顺序,你可以考虑“这是整个表达式的结果——无论使用哪一方——我想成为一个int,而不仅仅是一个操作数或另一个”。这是同一件事,但也许只是以一种更“真实世界”的方式来构建它。
$id = (int) ($_GET['id'] ?? 0);