从会话数组中拉出元素会删除 laravel 中的整个数组?

Pulling elements out of a session array deletes the whole array in laravel?

我正在尝试在会话变量中存储一组值。

因此,当我尝试添加变量时,我只需执行以下操作:

$request->session()->push('some.array', $id);

当我尝试将其拉出时,我会:

$request->session()->pull('some.array', $id);

我可以使用 push 方法添加尽可能多的元素,但是当我尝试拉取它时,它会删除整个数组。如何解决这个问题。如何只删除指定id的元素?

如果您仔细查看文档,您会发现

$request->session()->push('some.array', $id);

如果实际上在会话上创建一个名为 [array] 的子数组,那么当您 pull 使用

$request->session()->pull('some.array');

你实际上是在指示 laravel 删除整个子数组。

因此,要仅删除 some.array 的一个成员,您将必须

print_r( $request->session()->all() );

$tarray = $request->session()->pull('some.array');
unset( $tarray['an_item'] );
$request->session()->push('some.array', $tarray);

print_r( $request->session()->all() );