在现有PHP$\会话中添加/更改数组

在现有PHP$\会话中添加/更改数组,php,arrays,session,Php,Arrays,Session,我在PHP$\u会话中得到了以下数组 [CART] => SHOPPINGCART OBJECT ( [CONTENTS] => ARRAY ( [121] => ARRAY ( [QTY] => 1 )

我在PHP
$\u会话中得到了以下数组

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

我知道如何更改一些简单的
$\u SESSION
变量,但如果数组中有一个数组,然后有我要更改的值,该怎么办?或者,如果我想在
[CONTENTS]
中添加一个新数组,该怎么办?遗憾的是,我在这里找不到解决方案。

可以使用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);

$\u会话数组实际上包含一个包含数组的对象和一个包含数组的数组

所以使用普通符号来访问数量,例如

echo $_SESSION['CART']->CONTENTS[121]['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";
    }
}

检查这是否有效;然后,我们可以想出一种指定“121”的方法。

您到底想在数组中更改什么?例如,在本例中,我想将数量从1更改为5@monace19您可能需要根据SHOPPINGCART对象重新考虑这一点,monace19不,不起作用。会话中可能有2或3个QTY,但只有一个属于[121],因此必须以某种方式指定。他不是问如何存储它,而是问如何访问已经存储的内容,可能是他自己没有编写的内容。这给了我一个解析错误:解析错误(4):“语法错误,意外”[”,应为标识符(T_字符串)或变量(T_变量)或“{”或“$”,抱歉,没有出现121次,请参阅修订的示例2秒我将test@MarcelWasilewski用这个
$\u会话['CART']
来代替
$\u会话->['CART']
@MarcelWasilewski就是这样,有点困惑了。谢谢你发现了打字错误
$temp = $_SESSION['CART'];
$temp->CONTENTS['121']['QTY'] = 5;
$_SESSION['CART'] = $temp;