0

我正在尝试在电子商务网站中使用会话变量。这个想法是如果一个会话还没有开始,就开始一个会话。如果已经有一个会话,那么我想检查添加的新项目是否已经存在于会话数组中。如果是这样,那么我只会增加数量,如果没有,则附加到当前会话数组。

问题是附加不起作用。我得到了第一个和第二个数组,但不是添加第三个数组,而是在单击添加到购物车按钮时不断被覆盖。这是我的代码

<?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 回答