【问题标题】:laravel return null after getlaravel 获取后返回 null
【发布时间】:2018-02-26 02:54:03
【问题描述】:

我有一个发布功能,我想在会话中添加一个数组并在其他页面中使用它。但运行一次后它返回 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

为什么它返回一个空值?

【问题讨论】:

    标签: php laravel session post


    【解决方案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。

    在 PHP Docs http://php.net/manual/en/function.json-decode.php查看这些示例

    【讨论】:

      【解决方案2】:

      你必须了解 laravel 中会话的生命周期。根据您的代码,您尝试在生命周期结束之前转储数据。您应该做的只是让生命周期首先通过返回响应完成,然后您可以通过转储数据或返回响应来获取下一个请求的数据,因此您不需要停止生命周期。

      【讨论】:

      • 但我需要从会话中获取数组数量并向其中添加新值,然后在一个请求中将新数组放入会话中。
      • 您能否详细说明您在一个请求中所做的更改?因为如果您只需要在一个请求中进行更改,您可以先放入变量,然后在请求结束时将数据放入会话中。
      猜你喜欢
      • 2014-03-08
      • 2019-10-26
      • 2021-01-02
      • 2019-04-18
      • 2017-08-05
      • 2019-04-17
      • 1970-01-01
      • 2023-03-28
      • 2022-06-12
      相关资源
      最近更新 更多