PHP:通过变量设置会话变量

时间:2011-10-14 06:11:09

标签: php session variable-variables

我想设置一个类似于:

的会话变量
$key = '_SESSION[element]';
$$key = 'value';

这确实将$_SESSION['element']设置为value,但它似乎也清除了$_SESSION变量的其余部分,导致$_SESSION数组仅包含新变量键/值对。

如何使用变量变量写入会话而不进行核对?

编辑:如果无法做到这一点,那么就这样吧,我们可能需要重组并以“正确”的方式做事。我只是想知道是否有一个简单的解决方法

3 个答案:

答案 0 :(得分:2)

来自PHP Documentation

  

请注意,变量变量不能与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';