【问题标题】:Echoing session variables in php [duplicate]在php中回显会话变量[重复]
【发布时间】:2011-12-23 03:07:46
【问题描述】:

我知道在 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 手册:php.net/strings,请改用{$var}
  • 谢谢...我已经阅读了该页面,但在您发表评论后重新阅读并意识到我应该在该页面上找到一个链接到另一个有解释的链接。抱歉问了这么琐碎的事情。 :-)

标签: php session-variables syntax-error


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多