php - 如何从 laravel 中的 session 数组中删除一个项目

标签 php laravel session laravel-5 laravel-5.3

这是我有一个 session 的问题

session('products')

这其实是一个包含id的数组

session('products')
array:4 [▼
0 => "1"
1 => "2"
2 => "4"
3 => "1"
]

现在我想删除 4 我该怎么做?我试过方法

session()->pull($product, 'products');

但是没有用!

其他解决方案

session()->forget('products', $product);

还是不行

最佳答案

你 AFAIR 必须首先检索整个数组,编辑它然后重新设置它。如果你想按产品 ID 删除,我假设这是一个数组值,你可以使用: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);

被误解的问题

Session::pull 将第一个参数作为要删除的项目,将第二个参数作为要返回的默认值。你弄错了参数的顺序。尝试:

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

正如我在 source 中看到的那样, Session::forget 需要字符串或数组,所以你应该只指定第一个参数:

session()->forget('products');

关于php - 如何从 laravel 中的 session 数组中删除一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42609844/

相关文章:

php - 如果值尚未在 session 数组中,如何将新项目添加到 session 数组中? PHP

php - 如何从字符串末尾删除退格字符?

php - 在 Laravel Eloquent 中选择特定列以及所有相关模型

express - 在Redis中存储JWT token 的标准做法是什么?

session - Tomcat 8 - websockets session 和复制

javascript - AJAX 调用 CKEDITOR 可见性不起作用

php - 即使代码正确,也无法选择数据库表

laravel - 如何根据空值对表进行排序?

php - Laravel 5.2 时间戳

session - JSF PrimeFaces 丢失数据和 session