我有一个变量,其名称中包含另一个变量。如何将其更改为会话变量?

时间:2012-11-13 01:19:54

标签: php session variables

基本上标题是什么。我知道如何将正常变量变成会话变量($_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 个答案:

答案 0 :(得分: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";

答案 1 :(得分:0)

尝试

$_SESSION["coins{$uname}"]

区别在于......

1)使用brace语法

时双引号

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

答案 2 :(得分: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']

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

DINS

答案 3 :(得分: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}"];