Elvis 运算符 (?:) PHP 揭秘
在复杂的 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);
这里,它将 $this->_handle->result() 的结果赋给 $items if $items 为 null 或 false,否则 $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'
以后如果遇到 ?: 运算符,请记住它的目标是提供一种基于真实性的简洁评估和赋值方法,使您的代码更加高效和可读。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3