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

发布于 2024-12-10 03:23:21 字数 356 浏览 1 评论 0原文

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

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

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

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

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

I would like to set a session variable with something akin to:

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

This does indeed set $_SESSION['element'] equal to value, but it also seems to clear the rest of my $_SESSION variable, resulting in the $_SESSION array only containing the new key/value pair.

How can I write into the session using variable variables without nuking it?

Edit: if this can't be done, so be it, we'll probably have to restructure and do things the "right" way. I just wanted to know if there was an easy fix

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

决绝 2024-12-17 03:23:21

@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();

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

@Mala, I think eval will help you.
Check the code below. It may help you for what you want.

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();

If you still have any trouble, Let me know. Thank you

脱离于你 2024-12-17 03:23:21

来自 PHP 文档

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

你是如何最终陷入这样的境地的,这确实值得怀疑。你可能做错了什么。

编辑

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

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

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

From PHP Documentation:

Please note that variable variables cannot be used with PHP's
Superglobal arrays within functions or class methods. The variable
$this is also a special variable that cannot be referenced
dynamically.

How you ended up with a situation like this, is really questionable. You're probably doing something wrong.

EDIT

This little trick should give you what you want:

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

This will basically produce the same results as xdazz's answer

甜心 2024-12-17 03:23:21

这样不是更好吗?

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

Isn't this way better?

$key = 'element';
$_SESSION[$key] = 'value';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文