带铸造的空合并运算符
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);
我已经升级到 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);