我有点与
$hello = "hello";
echo "Say $hello";
echo "Say {$hello}";
echo "Say ${hello}";
混淆和输出是一样Say hello
。我应该何时使用{$hello}
和${hello}
?以及为什么它不能用于单引号?
我有点与
$hello = "hello";
echo "Say $hello";
echo "Say {$hello}";
echo "Say ${hello}";
混淆和输出是一样Say hello
。我应该何时使用{$hello}
和${hello}
?以及为什么它不能用于单引号?
$animal = 'cat';
echo "I have 14 $animals";
这可能导致问题,从而你将 “逃离” 它
echo "I have 14 ${animal}s";
或
echo "I have 14 {$animal}s";
在单变量造成/表达均从未取代。
单引号字符串将永远不会在PHP中扩展变量。请参阅:
http://php.net/manual/en/language.types.string.php
在PHP字符串格式的更多细节。总共有4个(包括在PHP 5.3中引入的nowdoc)。只有双引号和heredoc字符串格式会导致变量被扩展。
据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
。
有人走了,[写了一本关于此的手册](http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex)。你读过它吗? – 2012-02-29 08:46:31
谢谢@LinusKleen。现在我知道它是“卷曲”的 – 2012-02-29 08:51:33