我想设置一个类似于以下内容的会话变量:
$key = '_SESSION[element]';
$$key = 'value';
这确实设置$_SESSION['element']
为等于value
,但它似乎也清除了我的$_SESSION
变量的其余部分,导致$_SESSION
数组只包含新的键/值对。
如何使用变量变量写入会话而不使用它?
编辑:如果这不能做到,那就这样吧,我们可能不得不重组并以“正确”的方式做事。我只是想知道是否有一个简单的解决方法
我想设置一个类似于以下内容的会话变量:
$key = '_SESSION[element]';
$$key = 'value';
这确实设置$_SESSION['element']
为等于value
,但它似乎也清除了我的$_SESSION
变量的其余部分,导致$_SESSION
数组只包含新的键/值对。
如何使用变量变量写入会话而不使用它?
编辑:如果这不能做到,那就这样吧,我们可能不得不重组并以“正确”的方式做事。我只是想知道是否有一个简单的解决方法
来自PHP 文档:
请注意,变量变量不能在函数或类方法中与 PHP 的超全局数组一起使用。变量 $this 也是一个不能动态引用的特殊变量。
你怎么会遇到这样的情况,真的值得怀疑。你可能做错了什么。
编辑
这个小技巧应该给你你想要的:
$key = '_SESSION[element]';
$key = str_replace(array('_SESSION[', ']'), '', $key);
$_SESSION[$key] = 'value';
var_dump($_SESSION);
这基本上会产生与 xdazz 的答案相同的结果
@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();
如果您还有任何问题,请告诉我。谢谢
这样不是更好吗?
$key = 'element';
$_SESSION[$key] = 'value';