3

我不明白为什么 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。我哪里错了?

4

4 回答 4

11

$str包含内容为的字符串"$var"(没有变量替换,只有这些字符)。它是使用单引号创建的,因此没有变量替换。

当使用 回显它时echo "$str",变量$str将被替换为其内容,即字符串"$var",从而产生您的输出。

双引号字符串中的字符串替换不能递归工作!因此,为了在第二次出现时$str替换为1024 ,您必须首先$str使用双引号创建。

于 2012-09-03T11:23:17.567 回答
6

"允许您将变量放在字符串中。

'把里面的所有东西都当作一个字符串。

所以,如果你这样做'$var'- 它是内部的字符串$

"$str"取值$str所以打印$var

于 2012-09-03T11:24:03.720 回答
1

$str 包含文字字符串 $var,它永远不会被解释,因为它在单引号之间。

要解释它,您需要 eval()

eval($str)

将输出 1042

于 2012-09-03T11:23:36.140 回答
0

你是这个意思吗?

<?php
  error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  $var = 1024;
  $str = $var;
  echo $str, '<br>', "$str";

输出 -

1024

1024

呵呵

于 2012-09-03T11:23:36.480 回答