所以我有一个购物车系统,需要更新特定会话变量的数量。现在,如果我有一个ID为1的物品,
并添加另一个ID为1的商品,它将数量更新为2
,很好。但是如果我添加id = 2的项目,
然后我再次添加另一个id = 1的项目,它将id = 2的数量更新为2,
何时应将id = 1的数量更新为3
这是我的代码:
$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);
}
答案 0 :(得分: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;
}
}