我有一个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);
$b = session::get("a");
...
session::put("a",$b);
dd($b);
=> null
为什么返回null?
答案 0 :(得分:1)
您无法在会话中存储数组。您可以使用json_encode和json_decode执行此操作。例如:
$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_decode。
中查看这些示例答案 1 :(得分:0)
您必须了解laravel中会话的生命周期。根据您的代码,您尝试在生命周期结束之前转储数据。您应该做的只是让生命周期先完成,然后返回响应,然后您可以通过转储数据或返回响应来获取下一个请求的数据,因此您不需要停止生命周期。 / p>