![](/img/trans.png)
[英]Multidimensional Array Find and Update the Value in specific index using php
[英]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.