?:PHP中的运算符(“ Elvis运算符”)

alpha_juno

我今天在一些PHP代码中看到了这一点:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

我不熟悉?:这里使用的运算符。它看起来像三元运算符,但是省略了用于评估谓词为true的表达式。这是什么意思?

BalusC

如果左操作数为true求值为左操作数,否则为右操作数。

用伪代码,

foo = bar ?: baz;

大致解决

foo = bar ? bar : baz;

要么

if (bar) {
    foo = bar;
} else {
    foo = baz;
}

差异bar只会被评估一次。

您还可以使用此功能对foo发布的代码示例中所示的内容进行“自检”

foo = foo ?: bar;

这将分配barfooiffoo为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章