首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby's or-equals (foo ||=bar)?

Ruby's or-equals (foo ||=bar)?
EN

Stack Overflow用户
提问于 2010-07-29 20:53:36
回答 8查看 9.9K关注 0票数 23

在PHP中,我经常这样写代码

代码语言:javascript
运行
复制
isset($foo)? NULL : $foo = 'bar'

在ruby中有一个很棒的捷径,叫做or equals

代码语言:javascript
运行
复制
foo ||= 'bar'

PHP有这样的运算符、快捷方式或方法调用吗?我找不到,但我可能错过了。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-07-29 20:58:09

从PHP7开始,您可以使用Null Coalesce Operator

添加合并或??运算符,如果第一个操作数存在且不为

,则返回第一个操作数的结果,否则返回第二个操作数。

所以你可以这样写:

代码语言:javascript
运行
复制
$foo = $foo ?? 'bar';

如果设置为非null或将“$foo”赋值给$foo,它将使用bar。

顺便说一句,使用三元运算符给出的示例应该是:

代码语言:javascript
运行
复制
$foo = isset($foo) ? $foo : 'bar';

三元运算不是一种简写的if/else控制结构,但它应该用于根据第三个表达式在两个表达式之间进行选择,而不是选择两个语句或执行路径

票数 23
EN

Stack Overflow用户

发布于 2011-01-26 05:32:05

我真的很喜欢?:操作符。不幸的是,它还没有在我的生产环境中实现。所以,如果我要让它看起来像红宝石,我会选择这样的东西:

代码语言:javascript
运行
复制
isset($foo) || $foo = 'bar';

或者,如果您希望它更短(更慢,可能会产生意想不到的结果):

代码语言:javascript
运行
复制
@$foo || $foo = 'bar';
票数 9
EN

Stack Overflow用户

发布于 2010-07-29 21:00:25

您可以创建自己的函数:

代码语言:javascript
运行
复制
function setIfNotSet(&$var, $value) {
    if(!isset($var)) {
        $var = $value;
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3362626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档