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

Php 检查数组中是否存在id,并将项添加到数组中,php,yii,Php,Yii,如何获取表单中的数量以及如何添加项目?现在它没有添加,实际上它替换了以前的任何项目。我该如何检查是否已经存在?它永远不会得到输入框中的数量 public function actionBasketAjax($id) { $session=new CHttpSession; $session->open(); if(isset($_GET['qty'])) $quantity = $_GET['qty']; el

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

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

你在if和else中都做了同样的事情。谢谢你的解释!