我使用push方法以数组格式存储数据。
$request->session()->push('orders', [
$request->product_id => 1
]);
存储的数据结构如下 -
array (size=4)
0 =>
array (size=1)
11 => int 1
1 =>
array (size=1)
11 => int 1
2 =>
array (size=1)
9 => int 1
3 =>
array (size=1)
8 => int 1
如何删除特定的嵌套数组。
我试过这个但没有工作 -
$orders = $request->session()->get('orders');
foreach ($orders as $order_key => $order) {
foreach ($order as $key => $value) {
if($key == $id){
$value = $request->session()->pull('orders'.$order_key, 'default');
}
}
}
此处$id
是存储我要从会话中删除的产品的product_id的变量。
答案 0 :(得分:1)
您可以先管理$orders
数组然后再处理会话数据,如下面的代码建议:
$orders = $request->session()->get('orders');
foreach ($orders as $order_key => $order) {
foreach ($order as $key => $value) {
if($key == $id){
// SIMPLY UNSET THE $orders[$order_key] ENTRY
unset($orders[$order_key]);
}
}
}
// RE-STORE THE UPDATED SESSION-DATA TO SESSION
$request->session()->put('orders', $orders);