基本上标题是什么。我知道如何将正常变量变成会话变量($_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']']
我不记得我是否尝试过任何其他事情。
答案 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}"];