为什么字符串插值只适用于双引号 PHP
Why Does String Interpolation Only Work In Double Quotes PHP
我通过 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 中的双引号字符串?
按照定义,它就是这样工作的。这就是它的工作方式。没有 'why' PHP 的开发人员选择实现该功能的方式。
显而易见的答案是,有时您可能不希望在字符串中解释变量。
以下面的代码行为例:
$currency = "$USD";
这会产生一个 "undefined variable" 通知并且 $currency
是一个空字符串。绝对不是你想要的。
你可以逃脱它 ("$USD"
),但是,嘿,那是个傻瓜。
因此 PHP,作为一项设计决策,选择 double-quoted 字符串进行插值而不是 single-quoted 字符串。
我通过 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 中的双引号字符串?
按照定义,它就是这样工作的。这就是它的工作方式。没有 'why' PHP 的开发人员选择实现该功能的方式。
显而易见的答案是,有时您可能不希望在字符串中解释变量。
以下面的代码行为例:
$currency = "$USD";
这会产生一个 "undefined variable" 通知并且 $currency
是一个空字符串。绝对不是你想要的。
你可以逃脱它 ("$USD"
),但是,嘿,那是个傻瓜。
因此 PHP,作为一项设计决策,选择 double-quoted 字符串进行插值而不是 single-quoted 字符串。