提问人:Dave Lovely 提问时间:6/5/2019 最后编辑:zbeeDave Lovely 更新时间:6/5/2019 访问量:100
变量 具有数组元素值语法的变量
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: " . $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/>";
因此,代码的第 2 行是问题所在。
答:
0赞
zbee
6/5/2019
#1
问题来自尝试“太难”插入变量,如果您转义,您将留下字符串 ,这不是变量的有效名称 - 您正在尝试访问该变量,就好像它是这样定义的: .您要做的是获取该数组元素的值并在变量变量中使用该值,这需要通过引用它来完成。$_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
我不明白你会以这种方式存储什么,但你也可以研究替代方案,以实现更干净、更直接的方法。如果你澄清了你背后的用途,也许有人会提出一种替代方法。
评论
$
"$_SESSION[\"" . $value . "\"]"
-"\$_SESSION[\"" . $value . "\"]"
$_SESSION['order_setup'] = ['2019-06-04' => ['foo-123']]
$_SESSION['order_setup'] = ['2019-06-04' => ['foo-123'], '2019-06-05' => ['bar-987', 'baz-456']]