在$ _SESSION中存储数量的最佳方法

时间:2014-04-25 17:28:49

标签: php arrays session

我有以下功能将产品添加到购物车:

function AddToCart($pid)

     {  

               $_SESSION['products'][]['product_id'] = $pid;
      }

将产品数量存储到具有产品ID的同一数组的最佳方法是什么,因为['products']后面的数组自动生成我很困惑如何在那里分配数量?谢谢你的帮助:)

2 个答案:

答案 0 :(得分:0)

为什么不同时存储您需要的所有信息?以下是我自己购物车的摘录:

// add item to cart
$_SESSION['cart'][] = array('product_id' => $product_id,
                            'cat_id' => $cat_id,
                            'title' => $title,
                            'default_img' => $default_img,
                            'price' => $valid_product['base_price'],
                            'weight' => $valid_product['weight'],
                            'length' => $valid_product['length'],
                            'width' => $valid_product['width'],
                            'height' => $valid_product['height'],
                            'surcharge' => $surcharge,
                            'quantity' => $quantity,
                            'prop_selection' => $prop_selection,
                            'po_id' => $po_id,
                            'stock' => $stock,
                            'shipper_id' => $valid_product['shipper_id']);

答案 1 :(得分:0)

如果我理解正确的问题,当为数组中已有的$ pid调用AddToCart()时,您是否只是希望它为该产品增加数量属性?在我看来,您需要使用$_SESSION['products']的关联数组,而不是像现在这样使用数字索引数组:

function AddToCart($pid, $quantity=1) {
    if(is_array($_SESSION['products']) && array_key_exists($pid, $_SESSION['products'])) {
        $_SESSION['products'][$pid]['quantity'] += $quantity;
    } else {
         $_SESSION['products'][$pid] = array(
             'product_id' => $pid,
             'quantity' => $quantity
         );
    }
 }