1

基本上就是标题所说的。我知道如何将普通变量变成会话变量($_SESSION['var']),但当它包含另一个 var 时不知道

这是我的代码:

<?php
session_start();

$_SESSION["uname"] = "Tyler";

if (isset($_SESSION["coins{$uname}"])) 
{
    echo "$_SESSION["uname"] : $_SESSION["coins{$uname}"]";
}
elseif ($_SESSION["uname"] == "LOut")
{
    $_SESSION["coins{$uname}"] = "0";
    echo "Log In";
}
else
{
    $_SESSION["coins{$uname}"] = 500;
    echo "$_SESSION["uname"] : $_SESSION["coins{$uname}"]";
}
?>

我尝试了以下方法:

$_SESSION['{coins.$uname}']
$_SESSION['coins.$uname']
$_SESSION['coins.$_SESSION['uname']']

而且我不记得我是否尝试过其他任何方法。

4

4 回答 4

1

双引号是你想要的。

$_SESSION["coins.$uname"]

或者

$_SESSION["coins.{$_SESSION['uname']}"]

其中任何一个都应该可以正常工作。

说明: 单引号将按原样封装字符串。双引号实际上会解析字符串并替换其中包含的任何变量。有时,变量在字符串中无法清楚地识别,例如:

print "This is the $numberth time"; 
// Expected: 'This is the 50th time'
// Actual:   'This is the  time'

在这种情况下,您可以使用花括号来清楚地分隔变量,即:

print "This is the {$number}th time";

根据经验,我通常将任何对象属性或数组值包裹在花括号内,即:

print "This is the {$this->number}th time";
print "This is the {$time['number']}th time";
于 2012-11-13T01:23:41.753 回答
0

尝试

$_SESSION["coins{$uname}"]

不同的是...

brace1) 使用语法时的双引号

2)我假设您在.这里使用点字符进行连接?如果您使用大括号语法,则不需要它...

于 2012-11-13T01:23:21.610 回答
0

你能试试这个吗?

    $$coins = "Tyler";

    if (isset($$coins)) 
    {
    echo "uname : {$$coins}";
    }
    elseif ($$coins == "LOut")
    {
    $$coins = "0";
    echo "Log In";
    }
    else
    {
    $$coins = 500;
    echo "$uname : $$coins";
    }
    ?>

    <br>
    <a href="test.php">Test</a>

    </div>

    <div id="footer">

    </div>

所以你的会议将是

$_SESSION['$$coins']

这是我处理变量变量的方式......

丁斯

于 2012-11-13T01:44:00.860 回答
0

您说它不起作用,但您没有指定是否设置它或回显它是问题:根据您原来的、未经编辑的问题,有两个问题:

设置会话变量

这应该有效:

$_SESSION["coins{$uname}"] = 500;

如果你不能让它工作,试着把它分解成几个步骤。

$tempname = 'coins'.$uname;
$_SESSION[$tempname] = 500;

现在测试一下。

输出会话变量

echo $_SESSION["coins{$uname}"];或者echo $_SESSION[$tempname];

编辑

您的代码中存在语法错误:

echo "$_SESSION["uname"] : $_SESSION["coins{$uname}"]";

当您尝试为 ["uname"] 打开引号时,您错误地关闭了起始引号 (")。尝试:

echo "$_SESSION['uname'] : ".$_SESSION["coins{$uname}"];
于 2012-11-13T01:59:19.053 回答