php - 在会话 Laravel 7 中更改变量
问题描述
我想通过一个帖子表单更改我的会话('cart')中的属性“cantidad”,该表单具有输入类型 =“num”,该表单将在会话中更改数量。
但我不能成功地改变它,它什么也没做。
会话代码
$cart = [
$id => [
"id" => $product->id,
"nombre" => $product->nombre,
"cantidad" => 1,
"precio" => $product->precio,
"foto" => $product->imagen1
]
尝试更改会话属性
public function updateCart($id , Request $request){
$cart = session()->get('cart');
foreach($cart as $index => $product){
if($product["id"] == $id){
$producto["cantidad"] = $request->cantidad;
}
}
session()->put('cart' , $cart);
return view('carrito/carrito');
}
我哪里错了?
抱歉问这个,我是这个jaja的新手
解决方案
PHP 中的数组是按值传递的,而不是按引用传递的。换句话说,在您的foreach
循环中,您将获得数组的副本。
试试这个:
foreach(array_keys($cart) as $index){
if($cart[$index]["id"] == $id){
$cart[$index]["cantidad"] = $request->cantidad;
}
}
或者,您可以使用运算符通过引用传递数组&
:
foreach($cart as &$product){
if($product["id"] == $id) {
$product["cantidad"] = $request->cantidad;
}
}
推荐阅读
- javascript - 如何引用将在脚本加载后声明的函数
- grails - Grails 域对象读取忽略某些列
- angular - 如何在 Angular 中使用 csv-parse?
- c# - 尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错
- javascript - 如何过滤具有多个部门的文档
- javascript - 我正在解决一个实践竞争性编程问题,但我无法弄清楚出了什么问题
- c# - 我将一个正在运行的项目从一台电脑移动到另一台电脑,现在它提供了与数据库相关的错误
- google-cloud-platform - 指定的提供商“google”不存在
- python - DJANGO CRUD 没有名为“django.contrib.name”的模块
- r - 创建固定长度二进制向量的更快方法:如果固定长度为 6,则 4' 将变为 (0,0,0,1,0,0)