PHP中的 ?:(Elvis)运算符是做什么的,它是如何工作的?
大家好!我最近开始学习PHP,遇到了一个奇怪的运算符 `?:`。在一个项目中看到这样的代码:
```php
$name = $_GET['name'] ?: 'гость';
```
我理解普通的 ternary 运算符 `? :`,但这里只有一个问号和冒号。`?` 之前没有条件。这是如何工作的?什么是“Elvis 运算符”?
我尝试在本地测试了一下:
```php
$value = 0;
$result = $value ?: 'значение по умолчанию';
echo $result; // 输出 'значение по умолчанию'
```
为什么 `0` 被视为 false?如果变量未定义会怎样?会报错吗?
请为初学者解释一下:在什么情况下最好使用 `?:` 而不是普通的 ternary 运算符或 `??`(null coalescing)?什么时候应该使用它,什么时候最好避免?提前感谢!
<<>>
什么是 Elvis 运算符(?:)
运算符 ?:(Elvis 运算符)是 ternary 运算符的简写形式。它从 PHP 5.3 开始出现。