我不理解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。我哪里错了?
$str
包含一个内容为"$var"
的字符串(没有变量替换,只有这些字符)。它是使用单引号创建的,因此没有变量替换。
当使用echo "$str"
回显它时,变量$str
将被其内容(即字符串"$var"
)替换,从而产生输出。
双引号字符串中的字符串替换不能递归工作!因此,为了在第二次出现时将$str
替换为1024
,您必须首先使用双引号创建$str
。
"
允许您在字符串中放置变量。
'
把里面的所有东西都当作一个字符串。
所以,如果你做'$var'
,它是一个里面有$
的字符串。
"$str"
取$str
值,因此打印$var
$str包含文字字符串$var,由于它位于单引号之间,因此永远不会对其进行解释。
要解释它,您需要eval()
eval($str)
将输出1042
你是这个意思吗?
<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
$var = 1024;
$str = $var;
echo $str, '<br>', "$str";
输出-
1024
1024
呵呵