dssqq64884 2018-06-30 07:02
浏览 44
已采纳

更新多维购物车阵列中的值

I am writing a custom shopping cart in PHP, I add product info to the cart session like this:

$product_array=array($title,$price,$qty);
if(!isset($_SESSION['cart']))
$_SESSION['cart']=array();

if(!in_array($product_array,$_SESSION['cart']))
$_SESSION['cart'][]=$product_array;
else
{
// update price and quantity here
}

My challenge: I want to update the price and quantity($qty) of the product if it already exists in $_SESSION['cart'] array rather than adding it. Something like this

price = price + $price,
qty = qty + $qty
  • 写回答

1条回答 默认 最新

  • dongxu2398 2018-06-30 07:17
    关注

    This example is similar to your example. you can add code from foreach loop in else condition. I am considering product_id instead of $title variable.

     $_SESSION['cart'][] = [ 'product_id'=> 12, 'price' => 100 , 'quantity' => 2 ];
     $_SESSION['cart'][] = [ 'product_id'=> 11, 'price' => 200, 'quantity' => 3 ];
    
        $product_array = ['product_id' => 11, 'price'=> 200, 'quantity' => 4 ];
        foreach( $_SESSION['cart'] as $key => $value ) {
          if( $value['product_id']  == $product_array['product_id']) {
             $_SESSION['cart'][$key]['quantity'] = $value['quantity'] + $product_array['quantity'];
               $_SESSION['cart'][$key]['price'] = $value['price'] + $product_array['price'];
            }
        }
    print_r($_SESSION);
    

    Output before updating product :

    Array
    (
        [cart] => Array
            (
                [0] => Array
                    (
                        [product_id] => 12
                        [price] => 100
                        [quantity] => 2
                    )
                [1] => Array
                    (
                        [product_id] => 11
                        [price] => 200
                        [quantity] => 3
                    )
            )
    )
    

    Output after adding new product in session.

    Array
    (
        [cart] => Array
            (
                [0] => Array
                    (
                        [product_id] => 12
                        [price] => 100
                        [quantity] => 2
                    )
                [1] => Array
                    (
                        [product_id] => 11
                        [price] => 400
                        [quantity] => 7
                    )
            )
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题