gpt4 book ai didi

php - ? : operator (the 'Elvis operator' ) in PHP

转载 作者:IT老高 更新时间:2023-10-28 11:39:03 30 4
gpt4 key购买 nike

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

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

我不熟悉这里使用的 ?: 运算符。它看起来像一个三元运算符,但是如果谓词为真,则评估的表达式已被省略。什么意思?

最佳答案

如果左操作数是truthy,则计算左操作数, 否则为右操作数。

在伪代码中,

foo = bar ?: baz;

大致解析为

foo = bar ? bar : baz;

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

区别在于 bar 只会被评估一次。

您还可以使用它对 foo 进行“自检”,如您发布的代码示例所示:

foo = foo ?: bar;

如果 foo 为 null 或 false,这会将 bar 分配给 foo,否则它将保持 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 operator .

Elvis operator

关于php - ? : operator (the 'Elvis operator' ) in PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993409/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com