为什么字符串插值仅适用于双引号PHP

时间:2018-03-21 21:57:42

标签: php string string-interpolation

我注意到通过PHP编程,字符串插值("blah blah ${foo}")仅适用于双引号字符串("...")。

例如,这一行将起作用:

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

>> I like foo

但是这个不会:

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

>> I like ${bar}

我理解PHP Manual谈到插值仅在这样的字符串中起作用的事实,但它并不能解释为什么选择以这种方式工作。

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

2 个答案:

答案 0 :(得分:3)

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

例如,以下代码行:

$currency = "$USD";

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

可以逃避它("\$USD"),但是,嘿,这是一个faff。

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

答案 1 :(得分:-3)

按定义,它按照这种方式工作。这就是它的工作方式。除了PHP的开发人员选择实现该功能的方式之外,没有“为什么”。