2012-02-29 69 views
0

我有点与

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

混淆和输出是一样Say hello。我应该何时使用{$hello}${hello}?以及为什么它不能用于单引号?

+2

有人走了,[写了一本关于此的手册](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex)。你读过它吗? – 2012-02-29 08:46:31

+0

谢谢@LinusKleen。现在我知道它是“卷曲”的 – 2012-02-29 08:51:33

回答

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

这可能导致问题,从而你将 “逃离” 它

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

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

在单变量造成/表达均从未取代。

0

单引号字符串将永远不会在PHP中扩展变量。请参阅:

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

在PHP字符串格式的更多细节。总共有4个(包括在PHP 5.3中引入的nowdoc)。只有双引号和heredoc字符串格式会导致变量被扩展。

0

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

echo "Say ${hello}"; 

,这是一个卷曲的语法:

echo "Say {$hello}"; 

为什么他们两个输出一样吗? Becaus在PHP中可以在每个你想要的地方使用变量变量。例如:

$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

相关问题