我今天在一些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;

This will assign bar to foo if foo is null 或 falsey, else it will leave foo unchanged.

Some m或e examples:

<?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'
?>

By the way, it's called the Elvis operat或.

Elvis operat或

Php相关问答推荐

使用.htaccess将任何路由重定向到文件

WooCommerce数量减号和加号图标未显示

Mod_重写子目录中相应的php文件

将数组推送到数组时,数组推送()出现问题

我的邮箱中的链接在我的URL中添加了一个

如何在Livewire 3 Form类中做依赖注入?

按列值将二维数组排序为不超过N个的递增组

PHP按另一个二维数组的排序顺序对二维数组进行排序

curl_close()未从PHP 8开始写入CURLOPT_COOKIEJAR会话文件

如何批量处理消息总线中的消息

在具有Angular 的 Laravel 应用程序中,不显示图像

API 平台 - UI 服务器端点定义

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

如何为自定义帖子类型的自定义角色提供功能

MySQLI bind_param导致的Cannot modify readonly property错误

我怎样才能在 .htaccess 中有 2 个参数?

输出每个可能的产品选项

如何使用属性创建属性预设?

如何从 PHP 中的字符串位置排除图像扩展名

在 DomPDF 和 Laravel 中使用内联 css