【问题标题】:Whats the {} tag do in php? [duplicate]php 中的 {} 标签有什么作用? [复制]
【发布时间】:2011-09-29 16:47:05
【问题描述】:

可能重复:
curly braces in string

刚刚看到这段代码,我很好奇……

$msg .= "–{$mime_boundary}–n";   

$mime_boundary 变量之前被指定为字符串输出。

做了一个快速测试......

$var = "XmytextX";
$str ="some wrapper{$var}end of";
echo $str; 

它确实输出到字符串中。我以前从未见过这种输出 var 的方式。

找不到任何文档 - 谁能启发我?

【问题讨论】:

  • 此问题已在另一篇文章中得到解答。链接如下:点击以下链接:stackoverflow.com/questions/2596837/curly-braces-in-string
  • 想想如果不使用{},PHP 将如何看到您的“快速测试”:...wrapper$varend of。如果您没有名为 $varend 的变量,您只会得到 ... wrapper of

标签: php


【解决方案1】:

因此,通常,您可以使用双引号来输出任何变量,如下所示:

echo "Hello, $name";

但是,如果你想在数组中输出一个项目呢?

echo "Hello, $row['name']";

那是行不通的。因此,您可以将变量括在大括号中,以告诉编译器 interpolate 整个变量:

echo "Hello, {$row['name']}";

注意,您也可以将它与对象一起使用:

echo "Hello, {$row->name}";

希望有帮助!

【讨论】:

【解决方案2】:

这称为变量插值。事实上,你根本不需要 var 周围的 {} 。这也可以:

echo "The value of my var is $var";

但是,如果您需要更复杂的变量来输出,它有时仅适用于 {}。例如:

echo "This is a {$very['long']['and']['complex']['variable']}";

另请注意,变量插值仅适用于带有双引号的字符串!所以这行不通:

echo 'this is my $var';
// outputs: this is my $var

【讨论】:

    【解决方案3】:

    花括号将变量名称与文本的其余部分隔开,从而避免使用空格。

    例如,如果您删除了花括号,PHP 引擎将无法将$mime_boundary 识别为以下语句中的变量:

    $msg .= "–$mime_boundary–n";
    

    通过将变量封装在花括号中,您可以告诉 PHP 引擎处理该变量并返回其值。

    【讨论】:

    • 这种特殊情况真的很愚蠢,因为在变量名中找不到-
    【解决方案4】:

    这是为了消除歧义:在你的例子中,如果你写了 "some wrapper $vared of",很明显 PHP 会尝试把 $vared 的值放在那里,这不是你想要的。

    【讨论】:

      【解决方案5】:

      花括号让您指定应插入字符串的哪一部分。

      考虑$str ="some wrapper{$var}end of"; 诗句$str ="some wrapper$varend of";

      它们还允许您将数组元素和类变量直接插入到字符串中

      $str = "foobar $foo['bar']"; // parse error
      $str = "foobar {$foo['bar']}";
      $str = "this is my {$foo->bar[1]}";
      

      【讨论】:

        【解决方案6】:

        与变量插值有关。

        This is explained in the manual(在“复杂(卷曲)语法”下)。我很好奇如果你在 PHP 中工作,为什么你还没有阅读它。

        【讨论】:

        • 我从来没有使用 PHP 那样输出变量。 Tbh 我不是特别喜欢这种方法 - 我更喜欢使用 .连接,因为我可以清楚地看到我在哪里有哪些变量
        • @Doug:我也更喜欢串联,主要是出于同样的原因。我并不像最懒惰的插值方法 ("lol $cats hi mom!!1") 那样介意卷曲语法,因为它更明确,而且我的语法荧光笔可以处理它。
        【解决方案7】:

        如果您查看http://php.net/manual/en/language.types.string.php,您会发现它只是在字符串中嵌入变量的另一种方式,它只允许您定义变量的结尾在哪里。

        例如:

        $var = "Animal"
        echo "The {$var}s"; //Outputs "The Animals"
        

        【讨论】:

          猜你喜欢
          • 2016-02-16
          • 2015-08-26
          • 2019-01-02
          • 2013-07-07
          • 2011-05-26
          • 2016-09-11
          • 2013-02-09
          • 2020-03-21
          • 2013-04-24
          相关资源
          最近更新 更多