PHP等同于Ruby赋值习惯用法

时间:2009-07-30 23:39:41

标签: php ruby

Ruby的“|| =”赋值习惯用法的PHP等价物是什么?

场景是我想“按需”实例化对象或数组,而不一定是在初始化类时。

我试图在PHP文档中找到这个,但是我很难在那里找到我需要的东西(想念Ruby)。

谢谢!

5 个答案:

答案 0 :(得分:2)

我认为PHP没有类似的赋值语法。你必须用这样的东西伪造它:

if (empty($someVar))  $someVar = "DefaultVal";

注意:我不熟悉Ruby,所以我读了|| = operator here。我不确定那个操作员,如该链接所解释的那样,可以帮助你做你想做的事,但无论如何。

答案 1 :(得分:2)

怎么样:

<?php $someVar ?: 'default value'; ?>

这适用于PHP 5.3。

答案 2 :(得分:1)

答案是正确的,但是如果该值不存在,它将引发E_NOTICE。例如exports.myFunctionName = functions.firestore.document('users/marie').onWrite((change, context) => { // ... the change or context objects do not contain the request data }); 。如果$_GET['key']不在key的数组中,它将引发E_NOTICE。

如果您使用的是PHP 7(我强烈建议您使用),则有一个名为Null Coalesce Operator的新功能。

这样,如果存在且不为NULL,则返回其第一个操作数的结果,否则返回第二个操作数的结果:

$_GET

答案 3 :(得分:0)

这是我想念Ruby的其中一件事。你也可以这样做:

$foo = empty($foo) ? "default" : $foo;

虽然很难看。

答案 4 :(得分:0)

谢谢你们!所有这些响应都很有帮助(我已经阅读了文档的变量部分,但没有找到那里引用的empty())。

我最终使用了另一个帖子中发布的“isset($ x)|| $ x = 1”版本(我之前的搜索没有出现 - 搜索特殊字符是有问题的。)

我打算给大家点数,但如果没有注册,我似乎无法做到这一点,我厌倦了为我经常使用的1,001个网站做的事情。 ;)