更新特定的会话变量

时间:2012-11-02 16:52:40

标签: php arrays session variables

我正在使用此代码输出所有已注册的会话变量 -

 echo "<pre>";
 print_r($_SESSION);
 echo "</pre>";
 exit();

这就是我得到的

Array
 (
[language] => english
[navigation] => navigationHistory Object
    (
        [path] => Array
            (
                [0] => Array
                    (
                        [get] => Array
                            (
                            )

                        [post] => Array
                            (
                            )

                    )

                [1] => Array
                    (

                        [get] => Array
                            (
                            )

                        [post] => Array
                            (

                                [number] => XXXXXXXXXXXX
                                [x] => 62

                            )
                )

            )

        )
 )

我想将[1]数组中的数字变量从XXXXXXXX更新为555555.我试过了

$_SESSION['number'] = "55555555555555";

但最终创建了一个名为数字之外的新会话变量,其值为555 ..并且没有更新正确的值。可以这样做吗?

3 个答案:

答案 0 :(得分:2)

它是一个嵌套的数组/对象,所以你必须遍历到你想要设置的数组变量:

$_SESSION['navigation']->path[1]['post']['number'] = "55555555555555";

答案 1 :(得分:1)

试试这个:

$_SESSION['navigation']->path[1]['post']['number']=123;

答案 2 :(得分:1)

我自己常常对此感到困惑,这需要我一些时间来解释这些真正很长的人。一个非常简单的方法让你自己解决这个问题:执行以下操作:在代码的最后,你有一个print_r:

print_r($_SESSION);

猜猜层次结构中的下一个级别是什么:

print_r($_SESSION['navigation'])

运行它,如果出现错误,请尝试其他方法。如果它有效,你应该看到那个人的印刷品,你正在“接近”你的价值。一旦看起来不错,就可以使用另一个属性:

print_r($_SESSION['navigation']->path);

这有用吗?好的,继续。并且一直这样做,直到你得到你想要的。