为什么字符串插值只能在双引号PHP中工作
我注意到,通过PHP编程,字符串插值之类的东西${foo}只在双引号字符串中有效 例如,这一行可以工作:为什么字符串插值只能在双引号PHP中工作,php,string,string-interpolation,Php,String,String Interpolation,我注意到,通过PHP编程,字符串插值之类的东西${foo}只在双引号字符串中有效 例如,这一行可以工作: $bar = "foo"; echo "I like ${bar}"; >> I like foo 但这个不会: $bar = "foo"; echo 'I like ${bar}'; >> I like ${bar} 我理解,上面提到的插值只在这样的字符串中起作用,但它并没有解释为什么选择以这种方式工作 这就是我的问题,为什么在PHP中,字符串插值只能在双引
$bar = "foo";
echo "I like ${bar}";
>> I like foo
但这个不会:
$bar = "foo";
echo 'I like ${bar}';
>> I like ${bar}
我理解,上面提到的插值只在这样的字符串中起作用,但它并没有解释为什么选择以这种方式工作
这就是我的问题,为什么在PHP中,字符串插值只能在双引号字符串中工作?根据定义,它是这样工作的。这就是它的工作方式。除了PHP开发人员选择的实现该功能的方式之外,没有什么“为什么”了。显而易见的答案是,有时您可能不希望在字符串中解释变量 以以下代码行为例:
$currency = "$USD";
这将生成一个未定义的变量通知,$currency是一个空字符串。绝对不是你想要的
你可以逃过$USD,但嘿,那是假货
因此,作为一项设计决策,PHP选择插入双引号字符串,而不插入单引号字符串。在PHP中,双引号内的任何内容都会在输出之前进行解析,单引号内的任何内容都会被视为字符串。更好的问题可能是谁认为反勾号运算符是个好主意?不需要解析“单引号字符串”的额外好处。这是违约的一个很好的理由。性能。@ficuscr在默认情况下不是很好,或者性能真的没有意义?啊,一个要读取的链接。@ficuscr在性能差异中最多可以忽略不计,当它存在的时候。读得好。谢谢分享。虽然我同意这一点,但在我心目中,这仍然取决于适合于正确工作的正确工具。当字符串函数不能很好地进行比较时,不要使用preg。也许对我来说,关键是代码的可读性。同样的原因,我更喜欢Hello{$world}。为什么要浪费你的时间或其他人的时间来回答一个没有答案的问题呢?