0

e コマース Web サイトでセッション変数を使用しようとしています。アイデアは、セッションがまだ開始されていない場合にセッションを開始することです。既にセッションがある場合は、追加された新しいアイテムがセッション配列に既に存在するかどうかを確認したいと思います。もしそうなら、私は量を増やすだけです.そうでない場合は、現在のセッション配列に追加します.

問題は、追加が機能しないことです。最初と 2 番目の配列を取得しますが、3 番目の配列を追加する代わりに、[カートに追加] ボタンがクリックされるたびに 2 番目の配列が上書きされ続けます。これが私のコードです

<?php 

                if(isset($_SESSION['cart'])){
                    $newItems = '';
                    $cart = $_SESSION['cart'];
                    foreach($cart as $item => $value){
//$size, $colour, $quantity and $price are the current $_GET values
                        if($prodId == $value['prodId'] && $value['colour'] == $colour && $value['size'] == $size && $value['price'] == $price){
                            $value['qty']+= $quantity;
                            }else{
                                $newItems = array('prodId'=>$prodId,'price'=>$price,'qty'=>$quantity,'colour'=>$colour,'size'=>$size);
                                $cart []= $newItems;
                                }
                        }
                    }else{
                        $_SESSION['cart'] []= array('prodId'=>$prodId,'price'=>$price,'qty'=>$quantity,'colour'=>$colour,'size'=>$size);
                        }

?>

どこで問題が発生したのか本当にわかりません。私は多次元配列で運が悪かったのです。どんな助けでも大歓迎です。

4

1 に答える 1

1

$_SESSION['cart']変数に割り当てて、それを操作しました。これは単なるコピーであり、元の変数への参照ではありません。$_SESSIONもう一度アクセスして操作したい場合は、次の方法でこれを実現できます。

$cart = $_SESSION['cart'];
foreach($cart as $item => $value){
    if($prodId == $value['prodId'] && $value['colour'] == $colour && $value['size'] == $size && $value['price'] == $price){
        $_SESSION['cart'][$item]['qty']+= $quantity;
    }else{
        // ...

- - また - -

$cartを操作した後、を$_SESSION['cart']再度割り当てるだけです$cart

于 2012-06-08T20:13:56.127 に答える