具有数组元素值语法的变量变量

Variable Variables with array element values syntax

我想创建一个会话变量,但我希望会话变量名称是动态的。所以我需要的是 $_SESSION 变量的变量名的正确语法。

我已经尝试了下面的代码,它创建了一个变量变量名称并为其存储了一个值,它工作得很好。

$xvalue = $_SESSION['delivery_id'];
$delivery_string = 'this_delivery_id_' . $xvalue ;
$$delivery_string = $_SESSION['delivery_id'];
echo "Variable name:&nbsp;" . $delivery_string . "<br/>";
echo "Session Variable Value:&nbsp;" . $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:&nbsp;" . $xsession . "<br/>";
echo "Session Variable Value:&nbsp;" . $_SESSION["delivery_id_29"] . "<br/>";

所以代码的第2行就是问题所在。

问题来自尝试对变量进行一些插值 "too hard," 如果您转义 $_SESSION[$value] 您将留下字符串 "$_SESSION[$value]",这不是一个有效的名称一个变量 - 您正试图访问该变量,就好像它是这样定义的:$$_SESSION[$value] = 'foo';。您想要做的是获取该数组元素的值并在变量变量中使用它,这需要通过引用它来完成。

以下任何一项似乎都能提供您想要的结果;一个直变量变量:

$value = 'foo';
$_SESSION['foo'] = 'bar';
$bar = 'baz';

echo ${$_SESSION[$value]}; //prints baz

一步到位,有助于使其更加清晰:

$identifier = $_SESSION[$value];
echo $$identifier //prints baz

我不明白您将以这种方式存储什么,但您也可以研究替代方案以实现更清洁、更 straight-forward 的方法。如果您阐明了这背后的用途,也许有人可以提出替代方法。