我已升级到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
答案 0 :(得分:11)
(int)
强制转换优先于??
运算符,因此请使用括号:
$id = (int) ($_GET['id'] ?? 0);