检查id是否在数组中存在,并向数组中添加项


check if id exists in array and add items into array

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

中的数量
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);
        }

试试下面的代码:您需要使用多维数组来存放多个产品。

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