PHP美元符号字符串

时间:2012-09-03 11:20:52

标签: php

我不知道为什么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 个答案:

答案 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

和合