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

时间:2014-03-08 15:18:32

标签: php yii

如何获取表单中的数量以及如何添加项目?现在它没有添加,实际上它取代之前的任何项目。我如何检查已经存在?并且它永远不会在输入框中获得数量

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 个答案:

答案 0 :(得分:0)

试试这段代码: 您需要使用多维数组来保存多个产品。

$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);