带铸造的空合并运算符

Null coalesce operator with casting

我已经升级到 PHP 7 并开始使用空合并运算符来转换

$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 但我收到通知[=18] =]

Notice: Undefined index: id in test.php on line 2

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

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