Как сбросить элемент в массиве $_SESSION
У меня есть 2 функции. Первый - это добавление товара в корзину, второй - удаление определенного товара на основе идентификатора товара.
function AddToCart($pid) {
if (isset($_SESSION['products']['prod_count'])) {
$_SESSION['products']['prod_count'] ++;
$incart = $_SESSION['products']['prod_count'];
$_SESSION['products'][$incart]['product_id'] = $pid;
} else {
$_SESSION['products']['prod_count'] = 0;
$incart = $_SESSION['products']['prod_count'];
$_SESSION['products'][$incart]['product_id'] = $pid;
}
}
function DeleteProduct($pid) {
foreach ($_SESSION['products'] as $key => $my_value) {
foreach ($my_value as $key => $product_id) {
if ($product_id == $pid) {
// do not know how to unset this product
}
}
}
}
Мне нужна некоторая идея о том, как отключить продукт, если $product_id == $pid или, может быть, есть другие идеи, как этого добиться.
Мой массив выглядит примерно так:
array(1) { ["products"]=> &array(4)
{ ["prod_count"]=> int(2)
[0]=> array(1) { ["product_id"]=> int(4)}
[1]=> array(1) { ["product_id"]=> int(10) }
[2]=> array(1) { ["product_id"]=> int(11) } } }
1 ответ
Решение
Следующий код просто решит вашу проблему:
function DeleteProduct($pid) {
foreach ($_SESSION['products'] as $key => $product) {
if ($pid === $product['product_id']) {
unset($_SESSION['products'][$key]);
}
}
}
Но чтобы облегчить вашу работу в будущем, вы также можете создать свой массив следующим образом:
$_SESSION['products'] = array(
'product_id' => 'amount',
);
Чтобы добавить товар, вы просто сделаете:
$_SESSION['products'][$product_id] += $amount;
Для подсчета вашей продукции вы можете использовать:
count($_SESSION['products']);
Вот простой пример того, какими могут быть ваши функции:
function addProduct($pid, $value = 1) {
$_SESSION['products'][$pid] += $value;
}
function removeProduct($pid) {
unset($_SESSION['products'][$pid]);
}
function countProducts() {
return count($_SESSION['products']);
}
Удачи!