如何更新特定会话的会话变量

因此,我有一个购物车系统,需要更新特定会话变量的数量。现在,如果我有一个ID = 1的商品

http://img2.mukewang.com/60b08f380001aa7f01260061.jpg

并添加另一个ID = 1的商品,它将数量更新为2

http://img1.mukewang.com/60b08f440001b65601250059.jpg

,这很好。但是,如果我添加一个ID = 2的项目,

http://img2.mukewang.com/60b08f500001789101280057.jpg

然后我再次添加另一个id = 1的项目,它将id = 2的数量更新为2

http://img.mukewang.com/60b08f61000184bc01280062.jpg

什么时候应该将id的数量更新为1到3

http://img3.mukewang.com/60b08f6d0001b97601270059.jpg

这是我的代码:


$exists = false;

foreach ($_SESSION['cart'] as $key => $item) {

    if ($item['product_id'] == $part_id) {

        $exists = true;

    }

}

if ($exists == true) {

    $_SESSION["cart"][$key]['quantity']++;

}

else{

$_SESSION['cart'][] = array(

    'product_id' => $part_id,

    'title' => $title,

    'price' => $price,

    'default_img' => $default_img,

    'quantity' => $quantity);

}


jeck猫
浏览 117回答 1
1回答

婷婷同学_

在循环的最后,当您更新时$_SESSION["cart"][$key]['quantity'],$key它将始终指向中的最后一项$_SESSION["cart"],因此您将看到行为。您应该在循环中进行更新,例如foreach ($_SESSION['cart'] as $key => $item) {    if ($item['product_id'] == $part_id) {        $exists = true;        $_SESSION["cart"][$key]['quantity']++;    }}或在找到匹配项时退出循环,从而$key指向正确的值:foreach ($_SESSION['cart'] as $key => $item) {    if ($item['product_id'] == $part_id) {        $exists = true;        break;    }}
打开App,查看更多内容
随时随地看视频慕课网APP