dqh19413 2014-03-08 15:18
浏览 81
已采纳

检查数组中是否存在id并将项添加到数组中

how do i get the quantity in the form and how do i add the item? right now it doesn't add, actually it replaces any item that was there before. and how do i check if the already is there? and it never gets the quantity in the input box

public function actionBasketAjax($id)
    { $session=new CHttpSession;
        $session->open();
        if(isset($_GET['qty']))
            $quantity = $_GET['qty'];
        else $quantity = 1; 

        $productInfo = Product::model()->findByPk($id);
        $cartArray =Yii::app()->session['cart'];
        if (Yii::app()->session['cart'] === null)
        {
            $session->add('cart',array(
                    "product_id" => $id ,
                    "product_name" => $productInfo->product_name,
                    "quantity" => $quantity,
                    "price" => $productInfo->retail_price,
                    "totalPrice" => ($productInfo->retail_price * $quantity)
            ));
        }
        else{
            $newItem = array(
                    "product_id" => $id ,
                    "product_name" => $productInfo->product_name,
                    "quantity" => $quantity,
                    "price" => $productInfo->retail_price,
                    "totalPrice" => ($productInfo->retail_price * $quantity)
            );
            $cartArray = $session->add('cart', $newItem);
        }
  • 写回答

1条回答 默认 最新

  • douzhuo1858 2014-03-08 15:58
    关注

    Try this code: You need to use multi-dimensional array to hold the multiple products.

    $cartArray = Yii::app()->session['cart'];
    if($cartArray === null) // first time
    {
          $session->add('cart',array(     // each array is a product
                                    array(
                                        "product_id" => $id ,
                                        "product_name" => $productInfo->product_name,
                                        "quantity" => $quantity,
                                        "price" => $productInfo->retail_price,
                                        "totalPrice" => ($productInfo->retail_price * $quantity)
                                    )
                             )
                 );
    }
    else
    {
        $found_flag = false;
        foreach ($cartArray as $k => $c)
        {
              if($c["product_id"]==$id)// exists
              {
    
                $newItem = array(
                                "product_id" => $id ,
                                "product_name" => $productInfo->product_name,
                                "quantity" => $c["quantity"]+$quantity,
                                "price" => $productInfo->retail_price,
                                "totalPrice" => ($productInfo->retail_price * ($c["quantity"]+$quantity))
                            );    
                $cartArray[$k] = $newItem;
                $found_flag = true;
                break;
              }
        }
        if(!$found_flag)// id not found, then add as new item
        {
            $cartArray[] = array(
                                        "product_id" => $id ,
                                        "product_name" => $productInfo->product_name,
                                        "quantity" => $quantity,
                                        "price" => $productInfo->retail_price,
                                        "totalPrice" => ($productInfo->retail_price * $quantity)
                                    );
        }
    
        // re-assign session with new array
    
        $session->add('cart',$cartArray);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集