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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里