Null合并运算符与铸造

时间:2016-01-23 18:22:03

标签: php php-7 null-coalescing-operator

我已升级到PHP 7并开始使用null coalesce运算符来转换

之类的内容
$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';

$email = $_SESSION['email'] ?? '';

但如果我也在施法,我无法弄清楚如何做到这一点。例如,旧陈述

$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;

我会想像

$id = (int) $_GET['id'] ?? 0;

应该有用,但从某种意义上说,如果未设置$_GET['id'],则$id会解析为0,但我收到通知

  

注意:未定义的索引:第2行的test.php中的id

1 个答案:

答案 0 :(得分:11)

(int)强制转换优先于??运算符,因此请使用括号:

$id = (int) ($_GET['id'] ?? 0);