[英]Effective way to unset session array in php/symfony
php unset 正在工作,但在重新加载会话数据时仍然存在:我正在构建简单的 addtocart 并从 php/symfony5 中的购物车中删除,但我无法在 symfony 会话中从多维数组中取消设置数组。
^ array:3 [▼
0 => array:1 [▼
"items" => array:4 [▼
0 => 9
1 => "Dry fruit"
2 => "1234"
3 => "250g"
]
]
1 => array:1 [▼
"items" => array:4 [▼
0 => 8
1 => "Pumpkin"
2 => "123"
3 => "x"
]
]
这是我的购物车控制器:
$basket = $session->get('basket',[]);
dump($basket);
$size = $session->get('size');
if($request->isMethod('POST')){
$id = $request->request->get('0');
foreach($basket as $key => $value){
if($value['items'][0] == $id){
unset($basket[$key]['items']);
dd($basket);
//$session->set('basket',[]);
//return $this->redirectToRoute('cart');
}
}
}
在上面的代码中,当我单击树枝中的删除按钮并且 dd($basket) 完成时,数组为空,如下所示:
^ array:3 [▼
0 => [] //empty
1 => array:1 [▼
"items" => array:4 [▼
0 => 8
1 => "Pumpkin"
2 => "123"
3 => "x"
]
]
但是,当我评论 dd($basket) 并重新加载页面时,数组就像以前一样(似乎恢复了 idk),如果我取消注释 $session->set('basket',[]); 一切都是空的。
我想在这里实现的是,如何从会话多维数组中删除数组?
您只需将会话变量设置为更新后的$basket
值。
// get a copy of the basket from the session
$basket = $session->get('basket',[]);
// do whatever to update $basket here
// overwrite the basket in the session
$session->set('basket', $basket);
// then return a Response
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.