【问题标题】:what does {$variable1}{$variable2} mean?{$variable1}{$variable2} 是什么意思?
【发布时间】:2011-06-08 14:57:05
【问题描述】:

我在几个脚本中看到过这个,但不知道它是什么意思。正如在这个线程的标题中已经看到的,语法是这样的:{$variable1}{$variable2}。是否等同于: $variable1.$variable2 ?

感谢您的帮助!

【问题讨论】:

标签: php variables syntax


【解决方案1】:

是的,它几乎总是等同于使用串联:$variable1.$variable2

当您在双引号(不是单引号)中嵌入变量时,complex (curly) syntax 使用花括号有助于区分后面的两个变量,这样就不会混淆哪个变量是被提及。

例如,假设$test 等于walk。如果我想输入walked怎么办?

"$tested"

指的是一个实际变量,$tested

"{$test}ed"

指的是$test,然后是短语ed

引用数组索引需要使用花括号。

echo "Test $array['test]'";

没用,但是

echo "Test {$array['test]'}";

确实有效。

举一个更人为的例子,假设$a 包含es 并且$test 包含foobar

在这种情况下,您需要使用花括号:

echo "$t{$a}t"; // Returns 'foobar'

通常,这是不必要的,但有时,解释器可能会对您的变量感到困惑。大多数时候,它只是为了便于阅读。

echo "Test {$a}{$b}";

看起来比干净

echo 'Test '.$a.$b;

【讨论】:

    【解决方案2】:

    简单的答案是肯定的,它是一样的。包含在这些括号中的变量输出该变量。 请注意,可悲的是,您不能这样做:

    $a = "hello: {$a+1}";
    

    $b = "world: {someFunction($a)}";
    

    这只是一种输出变量的快速方法,因此事情不会变得复杂。 试试看:

    echo "hello mr {$name}!";
    

    echo "hello mr ".$name."!";
    

    第一个更清楚。

    将变量放在大括号中会更好,因为它看起来更美观,更易于阅读,并且还可以让您在变量名后直接有字母,例如:

    echo "Today is the {$date}st";
    

    【讨论】:

    • 注意:它们只适用于双引号。所以echo 'some {$variable}'; 是行不通的
    【解决方案3】:

    是的,它是等价的,但它有助于清楚地识别字符串的哪一部分是变量名,而哪一部分不是。

    例如:

    <?php
    $var1 = "somevalue1";
    $var1is = "somevalue2";
    echo "${var1}is nice";  //prints "somevalue1is nice"
    echo "$var1is nice"; //prints "somvalue2 nice"
    ?>
    

    【讨论】:

      【解决方案4】:

      我假设您已经熟悉 print "hello $user;"print "hello ".$user;。但是,如果您想连接 2 个变量(并且您更喜欢像前一个示例那样嵌入字符串),而不是使用 print "hello ".$user.$something;,您也可以使用 print "hello {$user}{$something}";

      【讨论】:

        【解决方案5】:

        您似乎指的是Complex (curly) syntax in the docs

        【讨论】:

          猜你喜欢
          • 2014-10-19
          • 1970-01-01
          • 2017-08-05
          • 2019-06-21
          • 2019-03-05
          • 1970-01-01
          • 1970-01-01
          • 2011-08-12
          • 2017-06-11
          相关资源
          最近更新 更多