php SESSION中的多维数组

时间:2014-02-08 22:41:05

标签: php session multidimensional-array

我在使用PHP的$_SESSION变量更新数组元素时遇到问题。这是基本结构:

$product = array();
$product['id'] = $id;
$product['type'] = $type;
$product['quantity'] = $quantity;

然后通过使用array_push()函数,我将该产品插入SESSION变量中。

array_push($_SESSION['cart'], $product); 

现在这是我面临问题的主要部分:

foreach($_SESSION['cart'] as $product){

    if($id == $product['id']){
        $quantity = $product['quantity'];
        $quantity += 1;
        $product['quantity'] = $quantity;       
    }

}

我想在$_SESSION['cart']变量中增加产品数量。我怎么能这样做?

2 个答案:

答案 0 :(得分:12)

不要盲目地将产品塞进会话中。使用产品的ID作为密钥,然后在购物车中查找/操作该项目是微不足道的:

$_SESSION['cart'] = array();
$_SESSION['cart'][$id] = array('type' => 'foo', 'quantity' => 42);

$_SESSION['cart'][$id]['quantity']++; // another of this item to the cart
unset($_SESSION['cart'][$id]); //remove the item from the cart

答案 1 :(得分:2)

这对你来说不是最好的答案...但希望可以帮助你们 我不是专家编码员,只是在这个论坛学习编码^,^。你必须总是试图解决。 更多示例希望可以帮助更新价值数量:

<?php 
if(isset($_POST['test'])) {
    $id =$_POST['id'];

    $newitem = array(
    'idproduk' => $id, 
    'nm_produk' => 'hoodie', 
    'img_produk' => 'images/produk/hodie.jpg', 
    'harga_produk' => '20', 
    'qty' => '2' 
    );
    //if not empty
    if(!empty($_SESSION['cart']))
    {    
        //and if session cart same 
        if(isset($_SESSION['cart'][$id]) == $id) {
            $_SESSION['cart'][$id]['qty']++;
        } else { 
            //if not same put new storing
            $_SESSION['cart'][$id] = $newitem;
        }
    } else  {
        $_SESSION['cart'] = array();
        $_SESSION['cart'][$id] = $newitem;
    }
} 
?>
<form method="post">
<input type="text" name="id" value="1">
<input type="submit" name="test" value="test">
<input type="submit" name="unset" value="unset">
</form>