Php 获取后,laravel返回null
我有一个post函数,我想在会话中添加一个数组,并在其他页面中使用它。但运行一次后,返回null:Php 获取后,laravel返回null,php,laravel,session,post,Php,Laravel,Session,Post,我有一个post函数,我想在会话中添加一个数组,并在其他页面中使用它。但运行一次后,返回null: $arr = [1,2,3]; session::put("a",$arr); $b = session::get("a"); ... session::put("a",$b); dd($b); => [ 0=> 1, 1=>2, 2=>3 ] 现在在下一篇发送帖子中,我评论了前两行: //$arr = [1,2,3]; //session::put("a",$arr)
$arr = [1,2,3];
session::put("a",$arr);
$b = session::get("a");
...
session::put("a",$b);
dd($b);
=> [
0=> 1,
1=>2,
2=>3
]
现在在下一篇发送帖子中,我评论了前两行:
//$arr = [1,2,3];
//session::put("a",$arr);
$b = session::get("a");
...
session::put("a",$b);
dd($b);
=> null
为什么返回空值?您不能在会话中存储数组。您可以使用json_编码和json_解码来实现这一点。例如:
$arr = [1,2,3];
session::put("a",json_encode($arr));
$b = session::get("a");
然后,在另一页中,您可以执行以下操作:
$b = json_decode(session::get("a"), true);
...
dd($b); // should print an array.
如果希望对象嵌入数组,请删除第二个参数:true,以进行json_解码
在PHP文档中查看这些示例,您必须了解laravel中会话的生命周期。根据您的代码,您试图在生命周期结束之前转储数据。您应该做的是让生命周期首先通过返回响应来完成,然后通过转储数据或返回响应来获取下一个请求中的数据,因此,您不需要停止生命周期。但我需要从会话中获取阵列数量,并在其中添加新值,然后在一个请求中向会话添加新阵列。您能否提供有关在一个请求中所做更改的更多详细信息?因为如果您只需要在一个请求中进行更改,您可以首先输入变量,在请求结束时,您可以将数据输入会话。