为什么字符串插值只能在双引号中起作用 PHP

Jon*_*906 0 php string string-interpolation

我通过 PHP 编程注意到字符串插值 ( "blah blah ${foo}") 只能在双引号字符串 ( "...") 中工作。

例如,这一行将起作用:

$bar = "foo";
echo "I like ${bar}";

>> I like foo
Run Code Online (Sandbox Code Playgroud)

但这个不会:

$bar = "foo";
echo 'I like ${bar}';

>> I like ${bar}
Run Code Online (Sandbox Code Playgroud)

我知道PHP 手册谈到了插值仅在此类字符串中起作用的事实,但它没有解释为什么选择它以这种方式工作。

这就是我的问题——为什么字符串插值仅适用于 PHP 中的双引号字符串?

lon*_*day 5

显而易见的答案是,有时您可能不希望在字符串中解释变量。

以下面的代码行为例:

$currency = "$USD";
Run Code Online (Sandbox Code Playgroud)

这会产生一个“未定义变量”通知,并且$currency是一个空字符串。绝对不是你想要的。

可以逃避它("\$USD"),但是,嘿,那是一个错误。

因此,作为一项设计决策,PHP 选择插入双引号字符串,而不插入单引号字符串。