Добавить / изменить массив в / в существующем PHP $ _SESSION

1

Я получил следующий массив в PHP $_SESSION

[CART] => SHOPPINGCART OBJECT
       (
             [CONTENTS] => ARRAY
                  (
                     [121] => ARRAY
                        (
                            [QTY] => 1
                         )

Я знаю, как изменить простую переменную $_SESSION, но что, если в массиве есть массив, а затем есть значение, которое я хочу изменить? Или что, если я хотел добавить новый массив в [CONTENTS]? К сожалению, я не мог найти решение здесь.

  • 0
    Что именно вы хотите изменить в массиве?
  • 0
    В этом случае, например, я хочу изменить количество от 1 до 5
Показать ещё 2 комментария
Теги:
arrays
session

3 ответа

2
Лучший ответ

Ваш массив $ _SESSION действительно содержит OBJECT, который содержит и ARRAY, который содержит ARRAY

Поэтому, используя обычную нотацию для доступа к QTY, например, вы бы сделали

echo $_SESSION['CART']->CONTENTS[121]['QTY'];

Или изменение QTY

$_SESSION['CART']->CONTENTS[121]['QTY'] = 10;

Добавление нового массива в СОДЕРЖАНИЕ будет

$_SESSION['CART']->CONTENTS[] = array('QTY' => 2);

Затем просмотрите весь массив СОДЕРЖАНИЯ, который вы могли бы сделать

foreach ( $_SESSION['CART']->CONTENTS as $id => $content ) {
    echo "$id\n"
    foreach ( $content as $qty ) {
        echo "    $qty\n";
    }
}
  • 0
    Это приводит меня к ошибке синтаксического анализа: PARSE ERROR (4): «синтаксическая ошибка, неожиданный '[', ожидаемый идентификатор (T_STRING) или переменная (T_VARIABLE) или« {»или« $ »»
  • 0
    Извините, пропустил 121 появление, см. Исправленный пример
Показать ещё 5 комментариев
0
$temp = $_SESSION['CART'];
$temp->CONTENTS['121']['QTY'] = 5;
$_SESSION['CART'] = $temp;

Проверьте, работает ли это; то мы можем придумать способ для указания "121".

0

Можно использовать комбинацию serialize()/unserialize().
Чтобы сохранить его в сеансе:

$cart= new SHOPPINGCART();
$_SESSION['cart'] = serialize($cart);

Чтобы действительно изменить значения из него:

$cart = unserialize($_SESSION['cart']);
// do anything with cart and store it afterwards with the code above
$cart["quantity"] += 1; // increment it by one
$_SESSION['cart'] = serialize($cart);
  • 1
    Он не спрашивает, как его хранить, он спрашивает, как получить доступ к тому, что уже сохранено, предположительно, чем-то, что он сам не написал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню