我想创建一个会话变量,但是会话变量名称是动态的。因此,我需要的是变量名称(即$ _SESSION变量)的正确语法。
我尝试了下面的代码,该代码创建了一个变量变量名并为其存储了一个值,并且效果很好。
$xvalue = $_SESSION['delivery_id'];
$delivery_string = 'this_delivery_id_' . $xvalue ;
$$delivery_string = $_SESSION['delivery_id'];
echo "Variable name: " . $delivery_string . "<br/>";
echo "Session Variable Value: " . $this_delivery_id_29 . "<br/>";
上面的代码在第5行回显29;理想的结果。
因此,在处理变量变量时,我只是尝试将变量名设置为$ _SESSION变量名。
$value = $_SESSION['delivery_id'];
$xsession = "$_SESSION[\"" . $value . "\"]"; // this gives compilation error so dead stop. I also tried without the escapes and also a dead stop. I also tried escaping the [ and ] and got rid of the compilation error so the code runs but it does not give the desired result.
$$xsession = $_SESSION['delivery_id'];
echo "Variable name: " . $xsession . "<br/>";
echo "Session Variable Value: " . $_SESSION["delivery_id_29"] . "<br/>";
所以代码的第二行就是问题所在。
答案 0 :(得分:0)
问题出在试图对变量“有点太难”进行插值,如果您逃脱了$_SESSION[$value]
,则会留下字符串"$_SESSION[$value]"
,这不是变量的有效名称-您正在尝试访问变量,就像定义变量一样:$$_SESSION[$value] = 'foo';
。您想要做的就是获取该数组元素的值,并在变量variable中使用它,这需要通过引用它来完成。
以下任何一种似乎都能给出您想要的结果;直接变量:
$value = 'foo';
$_SESSION['foo'] = 'bar';
$bar = 'baz';
echo ${$_SESSION[$value]}; //prints baz
一个又一个步骤,有助于使其更加清晰:
$identifier = $_SESSION[$value];
echo $$identifier //prints baz
我不知道您将以这种方式存储什么,但是您也可能会研究替代方案以实现更清洁,更直接的方法。如果您在此背后弄清楚用法,也许有人将可以建议一种替代方法。