在php中回应会话变量

时间:2011-11-06 16:32:40

标签: php session-variables syntax-error

我知道在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

所以我可以继续我的快乐方式,知道如何正确地做到这一点(只是将会话变量保持在双引号之外),但我真的很想理解为什么这对会话变量不起作用。

谢谢!

1 个答案:

答案 0 :(得分:17)

在双引号字符串中,您必须在{}中包含复杂变量(数组或对象属性):

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

这不是$_SESSION具体问题,而是引用键访问的任何数组。请注意,您可以包含数字索引的数组值,其中包含{},如"echo $array[2] is two";