我不知道为什么PHP不会在包含美元符号的字符串中进行替换。 请看以下示例:
<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
$var = 1024;
$str = '$var';
echo $str, '<br>', "$str";
输出 $ var $ var 。为什么会这样?第一个echo
参数一切都很清楚,但我预计最后一个参数会给出不同的结果(1024),因为它包含用双引号封装的美元符号,所以它应该被解释为变量并替换为1024。我哪里错了?
答案 0 :(得分:11)
$str
包含一个内容为"$var"
的字符串(无变量替换,只是这些字符)。它是使用单引号创建的,因此没有变量替换。
使用echo "$str"
回显它时,变量$str
会被其内容替换,即字符串"$var"
,从而导致输出。
双引号字符串中的字符串替换不能递归地工作!因此,为了在第二次出现时将$str
替换为1024
,您必须首先使用双引号创建$str
。
答案 1 :(得分:5)
"
允许您将变量放在字符串中。
'
将所有内容都作为一个字符串。
所以,如果你做'$var'
- 那里面是$
的字符串。
"$str"
获取$str
值,因此会打印$var
答案 2 :(得分:1)
$ str包含文字字符串$ var,它不会被解释,因为它在单引号之间。
要解释它,你需要eval()
eval($str)
将输出1042
答案 3 :(得分:0)
你是说这个吗?
<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
$var = 1024;
$str = $var;
echo $str, '<br>', "$str";
输出 -
1024
1024
和合