2

我想设置一个类似于以下内容的会话变量:

$key = '_SESSION[element]';
$$key = 'value';

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

如何使用变量变量写入会话而不使用它?

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

4

3 回答 3

2

来自PHP 文档

请注意,变量变量不能在函数或类方法中与 PHP 的超全局数组一起使用。变量 $this 也是一个不能动态引用的特殊变量。

你怎么会遇到这样的情况,真的值得怀疑。你可能做错了什么。

编辑

这个小技巧应该给你你想要的:

$key = '_SESSION[element]';
$key = str_replace(array('_SESSION[', ']'), '', $key);
$_SESSION[$key] = 'value';
var_dump($_SESSION);

这基本上会产生与 xdazz 的答案相同的结果

于 2011-10-14T06:14:40.940 回答
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();

如果您还有任何问题,请告诉我。谢谢

于 2011-10-14T07:06:51.413 回答
1

这样不是更好吗?

$key = 'element';
$_SESSION[$key] = 'value';
于 2011-10-14T06:34:07.023 回答