代码之家  ›  专栏  ›  技术社区  ›  Jagdish Sharma

如何将数据放入数组的数组中?

  •  -1
  • Jagdish Sharma  · 技术社区  · 7 年前

    我正在试着做一辆手推车,并有以下要求:

        Array
        (
            [items] => Array
                (
                    [0] => Array
                        (
                            [product_id] => 15
                            [addtocart_totalmrp] => 8953
                            [addtocart_totalsellingprice] => 7876
                            [addtocart_auid] => 7065bec17a101cf2,3025bec186520de3,6725bec18d7889a7
                        )
    
                    [1] => Array
                        (
                            [product_id] => 39
                            [addtocart_totalmrp] => 12654
                            [addtocart_totalsellingprice] => 11876
                            [addtocart_auid] => 1675bed115132bc6,755bed11033fe7d
                        )
    
                ),
                    [2] => Array////which is not coming after 2 it stops and start overwriting the 2nd position 
                        (
                            [product_id] => 39
                            [addtocart_totalmrp] => 12654
                            [addtocart_totalsellingprice] => 11876
                            [addtocart_auid] => 1675bed115132bc6,755bed11033fe7d
                        )
    
                )
    
        )
    

    这是我的代码:

    $cart1 = array("product_id" => $request->product_id,
                    "addtocart_totalmrp" => $request->addtocart_totalmrp,
                    "addtocart_totalsellingprice" => $request->addtocart_totalsellingprice,
                    "addtocart_auid" => $request->addtocart_auid);
    
    
                if ($request->session()->has('cart')) {
    
                    $products = Session::get('cart.items', array());  // get existed products or empty array
    
                    $products["items"][] = $cart1;                      // add new product to list
                    echo'<pre>';
                    print_r($products);
    
    
                    Session::push('cart.items', $products);      //putting that data to cart 
    
                    print_r(count($products));
                    dd($products);
    
                } else {
                    echo 'session haas no data';
                    $products["items"][] = $cart1;                      // add new product to list
                    print_r($products);
                    Session::put('cart.items', $products); 
    
                }
    

    当我试图添加第三个产品时,它正在覆盖第二个不知道怎么做。

    我已经尝试了这段代码及其工作原理,但是我再次使用了item key,这里的任何建议都是数组结构:

    array:1 [
      "items" => array:4 [
        "items" => array:1 [
          0 => array:4 [
            "product_id" => "39"
            "addtocart_totalmrp" => "12654"
            "addtocart_totalsellingprice" => "11876"
            "addtocart_auid" => "1675bed115132bc6,755bed11033fe7d"
          ]
        ]
        0 => array:4 [
          "product_id" => "28"
          "addtocart_totalmrp" => "17145"
          "addtocart_totalsellingprice" => "12165"
          "addtocart_auid" => "5205bed102b6d856,8255bed103e3ce14"
        ]
        1 => array:4 [
          "product_id" => "15"
          "addtocart_totalmrp" => "8953"
          "addtocart_totalsellingprice" => "7876"
          "addtocart_auid" => "7065bec17a101cf2,3025bec186520de3,6725bec18d7889a7"
        ]
        2 => array:4 [
          "product_id" => "15"
          "addtocart_totalmrp" => "8953"
          "addtocart_totalsellingprice" => "7876"
          "addtocart_auid" => "7065bec17a101cf2,3025bec186520de3,6725bec18d7889a7"
        ]
      ]
    ]
    

    if ($request->session()->has('cart')) {
    
    //                 $productsfromsession = Session::get('cart', array());  // get existed products or empty array
    // dd($productsfromsession);
    //                 $products["items"][] = $cart1;                      // add new product to list
    //                 echo'<pre>';
    //                 print_r($products);
    
    
    
                    Session::push('cart.items',$cart1);      //putting that data to cart 
                    $a=Session::get('cart', array());
                    //print_r(count($products));
                    dd($a);
    
                } else {
                    echo 'session haas no data <pre>';
                    $products["items"][] = $cart1;                      // add new product to list
                    print_r($products);
                    Session::put('cart.items', $products); 
    
                }
    

    根据答案更新代码:

    $cart1 = array("product_id" => $request->product_id,
                    "addtocart_totalmrp" => $request->addtocart_totalmrp,
                    "addtocart_totalsellingprice" => $request->addtocart_totalsellingprice,
                    "addtocart_auid" => $request->addtocart_auid);
    
    
    
    if ($request->session()->has('cart')) {
    
    
    
    
                    Session::push('cart.items',$cart1);      //putting that data to cart 
                    $a=Session::get('cart', array());
                    //print_r(count($products));
                    dd($a);
    
                } else {
                    echo 'session haas no data <pre>';
                    $products = [ $cart1 ];  // create a new cart and add a product in it
                    Session::put('cart.items', $products); 
                    print_r($products);
                }
    

    public function addtocart(Request $request) {
    
    
    // if user logged in check login and add data directly to cart without session 
            if (Auth::check()) {
                $user = Auth::user();
                echo 'auth sucess';
                //   adding data to table directly       //
            } else {
    
    // adding data to cart with session 
    
                $cart1 = array("product_id" => $request->product_id,
                    "addtocart_totalmrp" => $request->addtocart_totalmrp,
                    "addtocart_totalsellingprice" => $request->addtocart_totalsellingprice,
                    "addtocart_auid" => $request->addtocart_auid);
                print_r('am current cart data : <pre>');
                print_r($cart1);
    
    // checking for session has cart or not 
    
                if (Session::has('cartdata')) {
    
                    echo ' session cart has data ';
                } else {
    
                    echo 'session has no data add first data to session ';
                }
            }
        }
    
    }
    

    这是我的代码:

    // adding data to cart with session
                $cartdata = array("product_id" => $request->product_id,
                    "addtocart_totalmrp" => $request->addtocart_totalmrp,
                    "addtocart_totalsellingprice" => $request->addtocart_totalsellingprice,
                    "addtocart_auid" => $request->addtocart_auid);
                // print_r('am current cart data : <pre>');
                 //print_r($cartdata);
    
    
    // checking for session has cart or not
    
                if (Session::has('cartdata')) {
    
                  // dd(Session::get('cartdata'));
    
                     echo ' session cart has new data and it is :<pre> ';
    
                     //// fethcing old data from session
                    $productsfromsession = Session::get('cartdata');  // get existed array value
    
    
                //   decoding old data to normal array 
                    $data=json_decode($productsfromsession);
    
    
                    //dd($data); 
    
    
                    // pushing new data to old product array 
    
                     array_push($data->products,$cartdata);
    
    
                    // saving new data and encoding it again 
                    $newdata=json_encode($data);
    
                    dd($newdata);               ///every time i add data to this array its stop after 2nd inserted 
                    // removing old data from session 
                      $request->session()->forget('cartdata');
    
    
                    // putting new data to session   
                     Session::put('cartdata',$newdata); 
    
                    //  printing result 
                    dd(Session::get('cartdata'));
    
                //// printng current cart data after pusing new data
    
    
                 } else {
    
    
                      echo 'session has no data adding  first data to session is <pre>';
    
                      //     // putting first item to array
                      $products[]=$cartdata;
                     $cartdata=array("total_price"=>10,"products"=>$products);
                $cartdata=json_encode($cartdata);
                  Session::put('cartdata', $cartdata);
    
                     $data = Session::all();
                   print_r($data);
                }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Josh    7 年前

    试试这个:

    Session::push('cart.items', $cart1);
    

    有关会话的更多信息,请查看以下内容:

    https://laravel.com/docs/5.7/session#storing-data

        2
  •  1
  •   Oluwafemi Sule    7 年前

    在你的 ,当会话中没有“cart”时,我觉得这是一件很奇怪的事情。

    $products["items"][] = $cart1;  // add new product to 
    print_r($products);
    Session::put('cart.items', $products);
    

    上述代码将创建一个嵌套在“items”下的产品数组,该数组本身是嵌套的。

    [
       "cart" => [
          "items" => [
              "items" => [ $cart1 ]
          ]
       ]
    ]
    

    Session::push

    这个 if-else 会话::推送

    $cart = [/*...*/];
    Session::push('cart.items', $cart);