{$ hello},$ {hello}&有什么不同? $ hello什么时候使用双引号?

时间:2012-02-29 08:43:03

标签: php

我有点混淆

$hello = "hello";
echo "Say $hello";
echo "Say {$hello}";
echo "Say ${hello}";

,输出相同Say hello。我应该何时使用{$hello}${hello}?为什么它不能用于单引号?

3 个答案:

答案 0 :(得分:3)

$animal = 'cat';
echo "I have 14 $animals";

这可能会导致问题,因此你会“逃避”它

echo "I have 14 ${animal}s";

echo "I have 14 {$animal}s";

在单个引起的变量/表达式从未替换。

答案 1 :(得分:0)

单引号字符串永远不会扩展PHP中的变量。参见:

http://php.net/manual/en/language.types.string.php

有关PHP中字符串格式的更多详细信息。总共有4个(包括PHP 5.3中引入的nowdoc)。只有双引号和heredoc字符串格式才能扩展变量。

答案 2 :(得分:0)

根据http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing, 这是一个简单的语法:

echo "Say ${hello}";

这是一个卷曲的语法:

echo "Say {$hello}";

为什么它们都输出相同的?在PHP中使用Becaus,您可以在所需的每个位置使用变量变量。例如:

$var = 'somevar';
$bar = 'var';
echo $$bar; // "somevar", simple variable variable
echo ${$bar}; // "somevar", complex syntax
echo ${bar}; // "var", because {bar} treated as a string constant:
             // Notice: Use of undefined constant bar - assumed 'bar'

因此,使用变量变量语法${hello}只需转换为$hello