Laravel 5.4-从会话变量中删除数组

时间:2017-04-30 09:33:20

标签: php laravel session

我使用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的变量。

1 个答案:

答案 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);