相关疑难解决方法(0)

PHP三元运算符vs null合并运算符

有人可以解释PHP中三元运算符速记(?:)和空合并运算符(??)之间的差异吗?

他们什么时候表现不同,以同样的方式(如果这种情况发生)?

$a ?: $b
Run Code Online (Sandbox Code Playgroud)

VS.

$a ?? $b
Run Code Online (Sandbox Code Playgroud)

php ternary-operator null-coalescing-operator php-7

285
推荐指数
9
解决办法
10万
查看次数

Null合并算子与铸造

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

$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
Run Code Online (Sandbox Code Playgroud)

$email = $_SESSION['email'] ?? '';
Run Code Online (Sandbox Code Playgroud)

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

$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
Run Code Online (Sandbox Code Playgroud)

我会想到像

$id = (int) $_GET['id'] ?? 0;
Run Code Online (Sandbox Code Playgroud)

应该工作,但它似乎没有在某种意义上,如果$_GET['id']没有设置,$id解决,0但我收到通知

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

php null-coalescing-operator php-7

4
推荐指数
1
解决办法
821
查看次数