PHP 中的 Elvis 运算符 (?:)
在复杂的 PHP 代码库深处,你可能会遇到一个神秘的运算符: ?: 操作员。被称为“Elvis 运算符”的它可能会让您想知道“它的目的是什么?”
本质上,如果左操作数被认为是“真实的”,则 ?: 运算符将计算其左操作数,并且否则右操作数。换句话说:
foo ?: bar
大致相当于三元运算符:
foo ? foo : bar
或传统的 if-else 语句:
if (foo) { foo = foo; } else { foo = bar; }
但是,与三元运算符不同,?: 运算符仅计算左操作数一次,从而提高了效率。
用法示例
一个常见的用例是用于自检查,如代码片段中可见:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
这里,如果 $items 为 null 或 falsey,则将 $this->_handle->result() 的结果分配给 $items,同时保持 $items 不变
其他示例
这里还有一些示例来说明该行为:
var_dump(5 ?: 0); // 5 var_dump(false ?: 0); // 0 var_dump(null ?: 'foo'); // 'foo' var_dump(true ?: 123); // true var_dump('rock' ?: 'roll'); // 'rock' var_dump('' ?: 'roll'); // 'roll' var_dump('0' ?: 'roll'); // 'roll' var_dump('42' ?: 'roll'); // '42'
您是否应该在以下位置遇到 ?: 运算符未来,请记住,它的目标是提供一种基于真实性的简洁评估和分配方式,使您的代码更加高效和可读。
以上是什么是 Elvis 运算符 (?:) 以及它在 PHP 中如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!