具有数组元素值语法的变量变量
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行就是问题所在。
问题来自尝试对变量进行一些插值 "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 的方法。如果您阐明了这背后的用途,也许有人可以提出替代方法。
我想创建一个会话变量,但我希望会话变量名称是动态的。所以我需要的是 $_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行就是问题所在。
问题来自尝试对变量进行一些插值 "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 的方法。如果您阐明了这背后的用途,也许有人可以提出替代方法。