在php中回显会话变量

6

我知道在PHP中,当我使用echo时,我可以在引号字符串中放置变量名,但是显然我不能这样做以使用会话变量。有人能解释一下为什么吗?

以下是代码,其中“冒犯”的PHP被注释掉:

<?php
session_start();
$test = 100;
$_SESSION['test'] = 200;
?>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
  <p><?php echo($test."<br />");?></p>
  <p><?php echo("$test"."<br />");?></p>
  <p><?php echo($_SESSION['test']."<br />");?></p>
  <p><?php //echo("$_SESSION['test']"."<br />");?></p>
  </body>
</html>

输出结果如下:

100

100

200

但是,如果我取消注释有问题的代码行:
  <p><?php echo("$_SESSION['test']"."<br />");?></p>

我遇到了没有输出的问题,同时出现了下面的错误信息:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in - on line 14

因此我可以放心地继续使用正确的方式来操作(将会话变量放在双引号外面),但我真的很想了解为什么这对于会话变量不起作用。

谢谢!


请阅读有关字符串的PHP手册:http://php.net/strings,使用`{$var}`代替。 - hakre
谢谢...我已经阅读了那个页面,但在看到您的评论后重新阅读,发现该页面上有一个链接,我应该点击它以查看另一个解释。非常抱歉问这么简单的问题。 :-) - doxguy
1个回答

19

在双引号字符串内,必须使用{}将复杂变量(数组或对象属性)括起来:

<p><?php echo("{$_SESSION['test']}"."<br />");?></p>

这不仅仅是关于 $_SESSION 的问题,而是任何使用引号包含的数组键的问题。请注意,您可以使用{}将数字索引的数组值包装起来,例如:"echo $array[2] 是二";


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接