Как сбросить элемент в массиве $_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']);
}

Удачи!

Другие вопросы по тегам