我试图将纯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
答案 0 :(得分:2)
仅供参考,session([key => value])
是\Session::put(key, value)
的快捷方式。如果要更新嵌套会话值,可以在键中使用点作为路径分隔符。
如果要替换会话中的值,以下每行都将执行此操作:
session([ 'gamedata.Cards' => getCards() ]);
\Session::put('gamedata.Cards', getCards());
但是,如果会话中的值是您要添加的数组,则以下行将执行此操作:
\Session::push('gamedata.Cards', getCards());
不幸的是,使用session()
帮助程序没有此语法的快捷方式版本。