繁体   English   中英

如何更新 php laravel 中数组的特定索引值?

[英]How to update specific index value of array in php laravel?

我正在尝试创建添加到购物车 function,并且产品存储在数组中。 数组是这样的:

array:2 [▼
  0 => array:2 [▼
    "product_id" => "Produk-0036"
    "quantity" => "2"
  ]
  1 => array:2 [▼
    "product_id" => "Produk-0037"
    "quantity" => "3"
  ]
]

我的问题是如果 product_id 已经存在于数组中,如何更新数量?

$get_cart = Cookie::get('user_cart');
if(isset($get_cart)) {
    $cart_array[] = json_decode($get_cart);
}

$cart_array[] = ["product_id" => $request->product_id, "quantity" => $request->quantity];
$cart_json = json_encode($cart_array);
$cart_cookies = Cookie::forever('user_cart', $cart_json);

使用上面的代码将在数组中添加新索引,而不是更新已存在产品的数量

谢谢

我认为您需要在Cookie::forever之前更新产品数量。

你可以参考我的建议:

$cart_array = [
        ["product_id" => "Produk-0036", "quantity" => 2],
        ["product_id" => "Produk-0037", "quantity" => 3],
    ];
    
foreach($cart_array as &$cart)
{
  if(isset($cart["product_id"]) && $cart["product_id"] == $request->product_id) 
  {
      $cart["quantity"] += $request->quantity;
  }
}
$cart_json = json_encode($cart_array);
$cart_cookies = Cookie::forever('user_cart', $cart_json);

您可以使用array_map() function

尝试这样的事情:

$cart_array = [
    [
        "product_id" => "Produk-0036",
        "quantity" => "2"
    ],
    [
        "product_id" => "Produk-0037",
        "quantity" => "3"
    ]
];

$product_id = "Produk-0036";        // product_id to update

$cart_array = array_map(function ($item) use ($product_id) {
    if ($item["product_id"] == $product_id) {
        $item["quantity"] = "5";    // update quantity
    }
    return $item;
}, $cart_array);

var_dump($cart_array); // OUTPUT: updated array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM