我今天在一些PHP代码中看到了这一点:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
我不熟悉?:
这里使用的运算符。它看起来像三元运算符,但是省略了用于评估谓词为true的表达式。这是什么意思?
用伪代码,
foo = bar ?: baz;
大致解决
foo = bar ? bar : baz;
要么
if (bar) {
foo = bar;
} else {
foo = baz;
}
差异bar
只会被评估一次。
您还可以使用此功能对foo
发布的代码示例中所示的内容进行“自检” :
foo = foo ?: bar;
这将分配bar
给foo
iffoo
为null或falsey,否则它将foo
保持不变。
其他示例:
<?php
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'
?>
顺便说一下,它被称为Elvis运算符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句