Попробуйте заменить $was_found
на
$cart_product = null;
И замените ваш for
цикл и if
на (та же первая строка):
foreach ($_SESSION['cart_array'] as $each_item) {
if ($each_item['item_id'] != $pid) {
continue;
}
$cart_product = $each_item;
}
if (isset($cart_product)) {
$cart_product['quantity']++;
} else {
$cart_product = array('item_id' => $pid, 'quantity' => 1);
array_push($_SESSION['cart_array'], $cart_product);
}
Вам не нужно перебирать содержимое $each_item
. Идентификатор элемента должен быть доступен напрямую, если ваш формат соответствует формату, указанному в первой части внешнего if
.
Кстати, это было бы намного проще, если бы вы определили класс продукта вместо массивов. У вас может быть объект корзины, который вы можете запросить для cart_product
объектов.
Затем замените
<td>'quantity'</td>
с
<td>{$cart_product['quantity']}</td>
Мне не совсем понятно, как ваш SQL-запрос относится к этому.
Не имеет отношения к вашему вопросу, но
$pid = $_GET['add'];
с последующим
$sql = "SELECT * FROM `products` WHERE `productID` = '$pid'";
ужасно небезопасно. См. Как я могу предотвратить внедрение SQL в PHP?