Я получил следующий массив в PHP $_SESSION
[CART] => SHOPPINGCART OBJECT
(
[CONTENTS] => ARRAY
(
[121] => ARRAY
(
[QTY] => 1
)
Я знаю, как изменить простую переменную $_SESSION
, но что, если в массиве есть массив, а затем есть значение, которое я хочу изменить? Или что, если я хотел добавить новый массив в [CONTENTS]
? К сожалению, я не мог найти решение здесь.
Ваш массив $ _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";
}
}
$temp = $_SESSION['CART'];
$temp->CONTENTS['121']['QTY'] = 5;
$_SESSION['CART'] = $temp;
Проверьте, работает ли это; то мы можем придумать способ для указания "121".
Можно использовать комбинацию 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);