我注意到通过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中的双引号字符串?
答案 0 :(得分:3)
显而易见的答案是,有时您可能不希望在字符串中解释变量。
例如,以下代码行:
$currency = "$USD";
这会产生“未定义的变量”通知,$currency
是一个空字符串。绝对不是你想要的。
你可以逃避它("\$USD"
),但是,嘿,这是一个faff。
因此,作为设计决策,PHP选择内插双引号字符串而不选择单引号字符串。
答案 1 :(得分:-3)
按定义,它按照这种方式工作。这就是它的工作方式。除了PHP的开发人员选择实现该功能的方式之外,没有“为什么”。