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

                            )
                )


            )

        )
 )

Session Array のcart_number変数を XXXXXXXX から555555に更新したいと思います。

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

これは機能しますが、問題は、cart_number変数が常に [1] => 配列にあるとは限らないことです。[2] または [3] またはその他のいずれかになります。

だから私の質問は、その特定の変数のセッション配列を検索して、正しい値で更新できる方法はありますか? ありがとう。

4

2 に答える 2

1

簡単な方法は、見つかるまでオブジェクトをループするために使用することですforeach( 1 つだけであると仮定します)。navigationHistory['post']['cart_number']

擬似コード

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

よりオブジェクト指向のアプローチは、 のように、スタック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 に答える