Avatar ·

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 开始出现。