首页 > 解决方案 > 如何添加到数组中的值

问题描述

当产品的 id 已经存在于数组中时,我正在尝试增加产品的数量。

例如,我的产品数组$arr2如下所示:

Array
(
    [productid] => 3
    [productname] => Eikenhout pallet
    [productalias] => eikenhout-pallet
    [productcat] => Eikenhout
    [catalias] => eikenhout
    [quantity] => 1
    [kuubkosten] => 150|1 kuub
)

然后我创建一个会话并向其中添加所有信息。

if (!isset($_SESSION['cart'])) {
     // and turn session into array
   $_SESSION['producten'] = array();
}

// If id of product does not exist, add it to session
if(!isset($_SESSION['producten'][$arr2['productid']])){
    $_SESSION['producten'][$arr2['productid']] = $arr2;
// Else add to quantity
}else{
    $_SESSION['producten'][$arr2['productid']]['quantity'] += $arr2['quantity'];
}

如果我然后打印我的会话,这就是我得到的:

Array
(
    [3] => Array
        (
            [productid] => 3
            [productname] => Eikenhout pallet
            [productalias] => eikenhout-pallet
            [productcat] => Eikenhout
            [catalias] => eikenhout
            [quantity] => 1
            [kuubkosten] => 150|1 kuub
        )

)

但再次添加产品后,数量并没有增加。我究竟做错了什么?我可以在我的网络选项卡中看到所有数据都已正确发布并且没有错误。

标签: phparrays

解决方案


正如 devpro 已经说过的,您正在检查密钥“购物车”是否已设置

if (!isset($_SESSION['cart'])) {

但是您永远不会设置该变量。当您更改时,您的代码可能会正常工作

if (!isset($_SESSION['cart'])) {
    // and turn session into array
    $_SESSION['producten'] = array();
}

if (!isset($_SESSION['producten'])) {
    // and turn session into array
    $_SESSION['producten'] = array();
}

推荐阅读