搜索Sessions变量数组并进行更新

时间:2012-11-02 21:25:08

标签: 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
                            (

                                [cart_number] => XXXXXXXXXXXX
                                [x] => 62

                            )
                )


            )

        )
 )

我想将会话数组中的 cart_number 变量从XXXXXXXX更新到555555.我试过了

$_SESSION['navigation']->path[1]['post']['cart_number'] = 5555555

除了问题之外,其他方法都有效, cart_number 变量并不总是在 [1] =&gt;阵列。它可以在[2]或[3]或其他任何地方。

所以我的问题是,无论如何我可以在会话数组中搜索该特定变量并使用正确的值更新它吗?感谢。

2 个答案:

答案 0 :(得分:1)

简单方式是使用foreach循环navigationHistory个对象,直到找到['post']['cart_number'](假设只有1个)。

<强>伪代码

foreach ($_SESSION['navigation']->path as $navObj) {
    if (isset($navObj['post']['cart_number'])) {
        // update...
        break;
    }
}

更为面向对象的方法可能是navigationHistory中存在更新cart_number或搜索堆栈的方法,例如find()

答案 1 :(得分:0)

你可以这样设置..

foreach($_SESSION['navigation']->path as $key=>$val){
   if(isset($val['post']['cart_number'])) {
      $_SESSION['navigation']->path[$key]['post']['cart_number'] = 5555555;
   }
}

这将覆盖所有设置的cart_numbers