【问题标题】:PHP equivalent of a Ruby assignment idiom [duplicate]PHP等效于Ruby赋值习语[重复]
【发布时间】:2009-07-30 23:39:41
【问题描述】:

Ruby 的 "||=" 赋值习语的 PHP 等价物是什么?

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

我试图在 PHP 文档中找到它,但我很难在其中找到我需要的东西(错过了 Ruby)。

谢谢!

【问题讨论】:

    标签: php ruby


    【解决方案1】:

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

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

    注意:我不熟悉 Ruby,所以我阅读了 ||= 运算符 here。我不确定该操作员如何按照该链接中的说明帮助您做您想做的事,但无论如何。

    【讨论】:

      【解决方案2】:

      怎么样:

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

      这适用于 PHP 5.3。

      【讨论】:

      • 这很好用。但仅在 >5.3
      【解决方案3】:

      答案是正确的,但如果该值不存在,它将引发 E_NOTICE。例如$_GET['key']。如果key 不在$_GET 的数组中,它将引发一个E_NOTICE。

      如果您使用的是 PHP 7(我完全推荐使用它),则有一个名为 Null Coalesce Operator 的新功能。

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

      <?php $foo = $foo ?? 'default value'; ?>
      

      【讨论】:

        【解决方案4】:

        这是我对 Ruby 怀念的东西之一。你也可以这样做:

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

        虽然丑得要命。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-20
          • 2014-10-20
          • 2014-01-20
          • 2013-10-01
          • 1970-01-01
          • 2013-11-30
          • 2011-03-18
          • 1970-01-01
          相关资源
          最近更新 更多