2017-09-09 42 views
0

我試圖從Session中刪除數組項。我已經表明下列方式數組元素:Laravel:從會話中刪除數組項目

<?php $i=1; ?> 

@foreach(Session::get('product') as $row) 
    <tr> 
     <td> 
      <img src="{{asset('files/'.$row->thumbnil)}}" class="img-thumbnail" alt="" width="90px"> 
     </td> 
     <td>{{$row->name}}</td> 
     <td> 
      <a href="{{asset('deleteEnquote/'.$row->id)}}"> 
       <button class="btn btn-danger btn-sm"><i class="fa fa-remove"></i></button> 
      </a> 
     </td> 
    </tr> 
<?php $i++; ?> 
@endforeach 

這就是我是如何試圖刪除關鍵要素:

public function deleteEnquote($id) 
{ 

    $remove = Product::where('id',$id)->first(); 

    if(Session::has('product')){ 
     foreach (Session::get('product') as $key => $value) { 
      if($value === $remove){ 
       Session::pull('product.'.$key); // retrieving pen and removing 
       break; 
      } 
     } 
    } 

    return redirect('enquote'); 
} 

但問題是我無法從刪除相應的元素Array.Means元素不被刪除。如何從Session Array中刪除特定的元素?

回答

0

你需要做這樣的事情:

  1. 獲取陣列。
  2. 使用unset函數刪除該密鑰。
  3. 將更新後的數組再次設置爲具有相同密鑰的會話。

    $product = Session::get('product'); //step 1 
    unset($product[$key]);    //step 2 
    Session::put('product', $product); //step 3 
    
0

如果產品是你的會話數組,然後使用下面的代碼:

if(Session::has('product')){ 
    foreach (Session::get('product') as $key => $value) { 
    if($value === $remove){ 
     session()->forget('product.'.$key) 
     break; 
    } 
    } 
} 
+1

代碼只答案是沮喪,因爲他們沒有解釋他們是如何解決問題的問題。請更新您的答案以解釋如何解決問題。請回顧[我如何寫出一個好的答案](https://stackoverflow.com/help/how-to-answer) – FluffyKitten