1
私はPHPショッピングカートで作業していますが、同じアイテムの新しいエントリを作成するのではなく、カートのアイテムの数量を更新しようとしています。しかし、すでにカートに入っている製品を入力するとき、私のforeachステートメントはそれを最初の配列値と照合するだけで、その製品の新しいエントリを作成します。foreachは配列の最初の値のみをチェックしてから新しい値を作成します
誰かがこの作業を手伝って、アレイ全体のリストに対してチェックしていない理由を理解できますか?あなたは、それは常に最初の反復の後に壊れることを意味し、if
とelse
の両方でbreak;
を持って
function CheckForExistingEntry($id, $setOf, $quantity) {
// if the product ID and the SET OF is equal in multiple products, update the quanity instead of making new records
foreach ($_SESSION['shopping_cart'] as $key => $product) {
if ($id == $product['product_id'] && $setOf == $product['setOf']) {
// Update Cart Value
$_SESSION['shopping_cart'][$key]['quantity'] += $quantity;
$_SESSION['shopping_cart'][$key]['price'] *= $_SESSION['shopping_cart'][$key]['quantity'];
break;
} else {
// Add New Cart Value
AddToCart($id, $setOf, $quantity);
break;
}
}
}