我想设置一个类似于:
的会话变量$key = '_SESSION[element]';
$$key = 'value';
这确实将$_SESSION['element']
设置为value
,但它似乎也清除了$_SESSION
变量的其余部分,导致$_SESSION
数组仅包含新变量键/值对。
如何使用变量变量写入会话而不进行核对?
编辑:如果无法做到这一点,那么就这样吧,我们可能需要重组并以“正确”的方式做事。我只是想知道是否有一个简单的解决方法
答案 0 :(得分:2)
请注意,变量变量不能与PHP一起使用 函数或类方法中的超全局数组。变量 $ this也是一个无法引用的特殊变量 动态。
你是如何结束这样的情况的,真是值得怀疑。你可能做错了什么。
修改强>
这个小技巧可以给你你想要的东西:
$key = '_SESSION[element]';
$key = str_replace(array('_SESSION[', ']'), '', $key);
$_SESSION[$key] = 'value';
var_dump($_SESSION);
这基本上会产生与xdazz的回答相同的结果
答案 1 :(得分:2)
@Mala,我认为eval会帮助你。 检查下面的代码。它可以帮助你做你想要的。
session_start();
$_SESSION['user1'] = "User 1";
$_SESSION['user2'] = "User 2";
$key = "_SESSION['user3']";
eval("\$$key = 'User 3';");
foreach ($_SESSION as $key=>$value){
echo $key." => ".$value."<br/>";
unset($_SESSION[$key]);
}
session_destroy();
如果您仍有任何问题,请告诉我。谢谢
答案 2 :(得分:1)
这不是更好吗?
$key = 'element';
$_SESSION[$key] = 'value';