Привет, я использую код ниже, чтобы проверить, находится ли элемент с тем же pid, длиной и категорией уже в корзине покупок, и если это так, он должен отрегулировать количество товара. Проблема в том, что если вы добавляете элемент с тем же pid, длиной и категорией, вместо увеличения количества. Он добавляется в корзину покупок как новый продукт.
NOTE: An item has the same pid but it comes in different sizes and category. if (isset($_POST['pid'])) { $pid = $_POST['pid']; $length = $_POST["size"]; $qty = $_POST['Qty']; $Category = $_POST['Category']; $wasFound = false; $i = 0; if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } else { foreach ($_SESSION["cart_array"] as $each_item) { $i++; while (list($key, $value, $ilength, $pcategory) = each($each_item)) { if ($key == "item_id" && $ilength == $length && $pcategory == $Category && $value == $pid) { array_splice($_SESSION["cart_array"], $i-1, 1, array(array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $each_item['quantity'] + 1))); $wasFound = true; } } } if ($wasFound == false) { array_push($_SESSION["cart_array"], array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } } header("location: cart.php"); exit(); } ?>
Я бы попробовал это;) обновленный и протестированный код
foreach ($_SESSION["cart_array"] as $array_key=>$each_item) { if ($each_item['item_id'] == $pid && $each_item['length'] == $length && $each_item['Category'] == $Category) { $_SESSION["cart_array"][$array_key]['quantity']+=$qty; $wasFound = true; } }
Попробуй это…
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { $_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } else { foreach ($_SESSION["cart_array"] as $key=>$each_item) { if(($each_item['item_id']==$pid && ($each_item['length']==$length)&&($each_item['Category']==$Category)){ $_SESSION["cart_array"][$key]['quantity']++; $wasFound = true; $wasFound = true; } } if ($wasFound == false) { array_splice($_SESSION["cart_array"], array("item_id" => $pid, "length" => $length, "Category" => $Category, "quantity" => $qty)); } } header("location: cart.php"); exit(); }