PHP美元登录字符串


PHP dollar sign in strings

我不理解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

呵呵