将2D数组保存到Laravel会话中

时间:2017-10-31 20:44:23

标签: php laravel laravel-5

我试图将纯PHP代码转换为Laravel。此代码广泛用于会话 - 这是代码的简化部分(请忽略语法错误):

If

现在基于laravel文档,我的选项是

flag = True

这是非常愚蠢的......并且我不能在行结束时将其保存为一个becuz函数也可以与会话一起工作,因此会话需要在每次函数调用之前保存

基本上我希望能够立即在第二次会话中保存

    $_SESSION['gamedata']=[
        'game'=> 23 ,
        'n'=>0,
        'Cards'=>[],
        'Values'=>[],
    ];
    $_SESSION['gamedata']['Cards'][]= getCard();
    $_SESSION['gamedata']['Values'][]= getVal();

现在给我这个错误

    session(['gamedata' =>  [
        'game'=> 23 ,
        'n'=>0,
        'Cards'=>[],
        'Values'=>[],
    ]]);

    $gamedata = session('gamedata');
    $gamedata['Cards'][]= getCard();
    session(['gamedata'=>$gamedata]);

    $gamedata = session('gamedata');
    $gamedata['Values'][]= getVal();
    session(['gamedata'=>$gamedata]);

甚至这段代码

session([ ['gamedata']['Cards'][] => getCards() ]);

给我这个错误

Cannot use [] for reading

1 个答案:

答案 0 :(得分:2)

仅供参考,session([key => value])\Session::put(key, value)的快捷方式。如果要更新嵌套会话值,可以在键中使用点作为路径分隔符。

如果要替换会话中的值,以下每行都将执行此操作:

session([ 'gamedata.Cards' => getCards() ]);
\Session::put('gamedata.Cards', getCards());

但是,如果会话中的值是您要添加的数组,则以下行将执行此操作:

\Session::push('gamedata.Cards', getCards());

不幸的是,使用session()帮助程序没有此语法的快捷方式版本。