繁体   English   中英

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

[英]I have a variable with another variable within its name. How do I change it into a session variable?

标题基本上是怎么说的。 我知道如何将普通变量转换为会话变量($_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']']

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

双引号是您想要的。

$_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";

尝试

$_SESSION["coins{$uname}"]

区别是...

1)使用大brace语法时使用双引号

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

你可以试试这个吗?

    $$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']

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

丁斯

您说它不起作用,但是您没有指定是设置还是回显它是问题所在:根据您原始的未经编辑的问题,有两个问题:

设置会话变量

这应该工作:

$_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}"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM