How to remove an item from session array in laravel

前端 未结 2 1605
死守一世寂寞
死守一世寂寞 2020-12-21 01:23

Here is the problem I have a session

session(\'products\')

this is actually an array that contains id

session(\'products\')         


        
相关标签:
2条回答
  • 2020-12-21 01:37

    You AFAIR have to firstly retrieve whole array, edit it and then set it again. If you want to delete by product ID, which is as I assume an array value, you can use this: PHP array delete by value (not key)

    $products = session()->pull('products', []); // Second argument is a default value
    if(($key = array_search($idToDelete, $products)) !== false) {
        unset($products[$key]);
    }
    session()->put('products', $products);
    

    Misunderstood question

    Session::pull takes first parameter as the item do delete and second as the default value to return. You have mistaken the order of arguments. Try:

    session()->pull('products'); // You can specify second argument if you need default value
    

    As I can see in source, Session::forget expects string or array, so you should specify only the first parameter:

    session()->forget('products');
    
    0 讨论(0)
  • 2020-12-21 01:40

    This method isn't tested:

    Session::forget('products.' . $i);
    

    note the dot notation here, its worth the try. If that isnt working, you can always do this:

    $products = Session::get('products'); // Get the array
    unset($product[$index]); // Unset the index you want
    Session::set('products', $products); // Set the array again
    
    0 讨论(0)
提交回复
热议问题