【问题标题】:PHP: Is there a difference between {$foo} and ${foo} [duplicate]PHP:{$foo} 和 ${foo} 之间有区别吗?
【发布时间】:2016-09-09 06:15:53
【问题描述】:

有时你需要让 PHP 清楚变量名到底是什么。我发现我和一位同事的做法略有不同。 假设您有一个变量 $foo 并希望在输出时附加 _constant_string 我一直在使用

return "<input type='hidden' name='${foo}_constant_string' value='true' />";

而我的同事正在使用

return "<input type='hidden' name='{$foo}_constant_string' value='true' />";

(稍微做作的例子来简化它)。

我的快速测试没有发现明显的区别,但我很好奇:有区别吗?有理由偏爱一个吗?

编辑: 我上面的例子使用了字符串,但我的问题更笼统——我应该明确地说出来。我知道您可以使用花括号进行转义,但没有找到两种使用它们的方式之间是否存在(在任何情况下)差异的具体点。我得到了答案:没有字符串(这是“重复”帖子的内容),而是数组和对象(感谢@dragoste)。

【问题讨论】:

  • 我想知道为什么问题被标记为重复。可能那个人没看标题。

标签: php


【解决方案1】:

看来,任何PHP版本都没有区别

    $foo = 'test';      
    var_dump("$foo");
    var_dump("{$foo}");
    var_dump("${foo}");

测试:https://3v4l.org/vMO2D

无论如何,我更喜欢"{$foo}",因为我认为它更具可读性,并且适用于其他语法不具备的许多其他情况。

作为一个例子,让我们尝试对象属性访问:

var_dump("$foo->bar"); //syntax error
var_dump("{$foo->bar}"); // works great
var_dump("${foo->bar}"); //syntax error

同样的情况是数组。

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

【讨论】:

    【解决方案2】:

    不,没有区别。

    // Works, outputs: This is fantastic
    echo "This is {$great}";
    echo "This is ${great}";
    

    Php manual

    Answer on stackoverflow

    变量的另一种用法:

    $foo = 'test';
    $test = 'foo';
    var_dump("{${$foo}}"); //string(3) "foo"
    

    或者对于数组:

    $foo = ['foo','test'];
    var_dump("{$foo[0]}"); //string(3) "foo"
    var_dump("${foo[1]}"); //string(4) "test"
    

    【讨论】:

      【解决方案3】:

      下面的说法没有区别-

      echo "This is {$great}";
      echo "This is ${great}";
      

      两个语句的输出将相同。请检查以下示例-

      $great = 'answer';
      echo "This is {$great}"."\n";
      echo "This is ${great}";
      
      Output:-
      
      This is answer
      This is answer
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 2012-08-08
        • 2016-12-01
        • 2017-07-04
        • 2012-07-26
        • 2017-03-14
        • 1970-01-01
        相关资源
        最近更新 更多