【发布时间】:2009-07-30 23:39:41
【问题描述】:
Ruby 的 "||=" 赋值习语的 PHP 等价物是什么?
场景是我想“按需”实例化一个对象或数组,而不一定是在初始化一个类时。
我试图在 PHP 文档中找到它,但我很难在其中找到我需要的东西(错过了 Ruby)。
谢谢!
【问题讨论】:
Ruby 的 "||=" 赋值习语的 PHP 等价物是什么?
场景是我想“按需”实例化一个对象或数组,而不一定是在初始化一个类时。
我试图在 PHP 文档中找到它,但我很难在其中找到我需要的东西(错过了 Ruby)。
谢谢!
【问题讨论】:
我认为 PHP 没有类似的赋值语法。你必须用这样的东西来伪造它:
if (empty($someVar)) $someVar = "DefaultVal";
注意:我不熟悉 Ruby,所以我阅读了 ||= 运算符 here。我不确定该操作员如何按照该链接中的说明帮助您做您想做的事,但无论如何。
【讨论】:
怎么样:
<?php $someVar ?: 'default value'; ?>
这适用于 PHP 5.3。
【讨论】:
答案是正确的,但如果该值不存在,它将引发 E_NOTICE。例如$_GET['key']。如果key 不在$_GET 的数组中,它将引发一个E_NOTICE。
如果您使用的是 PHP 7(我完全推荐使用它),则有一个名为 Null Coalesce Operator 的新功能。
这样,如果第一个操作数存在且不为 NULL,则返回第一个操作数的结果,否则返回第二个操作数:
<?php $foo = $foo ?? 'default value'; ?>
【讨论】:
这是我对 Ruby 怀念的东西之一。你也可以这样做:
$foo = empty($foo) ? "default" : $foo;
虽然丑得要命。
【讨论】: