Php 将二维阵列保存到Laravel会话中
我正在尝试将纯PHP代码转换为Laravel。此代码广泛用于会话-以下是代码的简化部分(请忽略语法错误): 现在根据laravel文档,我的选择是Php 将二维阵列保存到Laravel会话中,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正在尝试将纯PHP代码转换为Laravel。此代码广泛用于会话-以下是代码的简化部分(请忽略语法错误): 现在根据laravel文档,我的选择是 session(['gamedata' => [ 'game'=> 23 , 'n'=>0, 'Cards'=>[], 'Values'=>[], ]]); $gamedata = session('gamedata');
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]);
这是非常愚蠢的。。。不,我不能将它保存在行的末尾,因为函数也与会话一起工作,所以会话需要在每次函数调用之前保存
基本上,我希望能够在2d会话中立即保存
session([ ['gamedata']['Cards'][] => getCards() ]);
这就给了我这个错误
Cannot use [] for reading
Undefined index: Cards
即使是这个代码
session([ ['gamedata']['Cards'] => getCards() ]);
给了我这个错误
Cannot use [] for reading
Undefined index: Cards
仅供参考,会话([key=>value])
是\session::put(key,value)
的快捷方式。如果要更新嵌套会话值,可以在键中使用点作为路径分隔符
如果要替换会话中的值,则以下每一行都会这样做:
session([ 'gamedata.Cards' => getCards() ]);
\Session::put('gamedata.Cards', getCards());
但是,如果会话中的值是要添加到的数组,则以下行将完成此操作:
\Session::push('gamedata.Cards', getCards());
不幸的是,使用
session()
helper.thanx没有此语法的快捷版本,但是gamedata.Cards
本身是一个数组,我希望向该数组添加值,而不是用新值替换其值,或者我弄错了?基本上我想要的是cards[]=newval
而不是cards=newval