0

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

 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] => 数组中。它可以在 [2] 或 [3] 或其他任何地方。

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

4

2 回答 2

1

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

伪代码

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

一种更 OO 的方法可能是存在于navigationHistory更新cart_number或搜索堆栈的方法,例如find().

于 2012-11-02T21:31:23.383 回答
0

你可以这样设置..

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

这将覆盖所有已设置的 cart_numbers

于 2012-11-02T21:33:11.490 回答