Неопределенный индекс при удалении $_SESSION

У меня есть этот код, чтобы удалить любую идею из корзины... Мне нужно удалить два $_SESSION, 1) $ _SESSION ["cart_array"]

2 $ _SESSION ["миникарта"]

Без меня добавление $_SESSION["minicart"] это действительно удаляет $_SESSION["cart_array"] но когда я добавил это, я получил minicart часть я получил undefined index: minicart, Так что я

пытался

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) &&!isset($_SESSION["minicart"]) || count($_SESSION["minicart"]) < 1) {

код выше проверяет // Если переменная сеанса корзины не установлена ​​или массив корзины пуст *

в оригинал if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {

Так

<?php

 //   if user wants to remove an item from cart
 if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {
    // Access the array and run code to remove that array index
    $key_to_remove = $_POST['index_to_remove'];
    if (count($_SESSION["cart_array"]["minicart"]) <= 1) {
        unset($_SESSION["cart_array"]["minicart"]);
    } else {
        unset($_SESSION["cart_array"]["minicart"] ["$key_to_remove"]);
        sort($_SESSION["cart_array"]["minicart"]);
    }
}
?>

Мой вопрос, глядя на то, что я делаю, я делаю неправильно в if заявление, а также что я делаю не так в statement удалить ($_SESSION["cart_array"]) AND ($_SESSION["minicart"])

Если это все еще неясно, пожалуйста, оставьте комментарий, и я сделаю все возможное, чтобы объяснить это снова.

2 ответа

Попробуйте изменить

if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {

в

if (isset($_POST['index_to_remove']) && ($_POST['index_to_remove'])) {

или же !empty вместо isset

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) 
    && !isset($_SESSION["minicart"]) || count($_SESSION["minicart"]) < 1) {

У вас есть проблема булевой логики здесь. Это не предотвращает доступ к $_SESSION['minicart'] или $_SESSION['cart_array'], если он не установлен. То, что доступ, когда он не установлен, дает вам вашу ошибку. Проверьте свои отрицания (!) И действительно ли вы хотите || там.

Я не понимаю, что нужно проверять перед сбросом значений $ _SESSION, мне не хватает информации и контекста. Поэтому я не могу дать вам код для вставки в ваш код. Все, что я могу сделать, это сказать вам, почему вы получаете неопределенные ошибки индекса. Ваш оператор if, который должен удерживать доступ к $_SESSION['cart_array'] и $_SESSION['minicart'], если они не заданы, не выполняет то, что вы хотели. Проследи это и проверь свою логику. Если вы не можете заставить его работать, то упростите его, разбив его на несколько вложенных операторов if.

Если вы хотите скопировать и вставить код, вам нужно будет уточнить, что вы делаете немного больше. Что вы проверяете с помощью частей count(), при каких обстоятельствах вы хотите сбросить переменные и какие переменные вы хотите сбросить.

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