如何在不覆盖现有数组的情况下向会话中添加其他(多个)值?

时间:2017-02-28 09:51:15

标签: php arrays laravel

当我尝试向会话数组添加其他数据时,它会覆盖旧数据。有没有办法在不覆盖旧会话数据的情况下向会话数组添加多个值,还是让我逐个使用push?

例如:

session()->put([
  'parent'=>[
     'name'=>'jhon', 
     'surname'=>'doe', 
  ] 
]); 

现在session()->all()我得到:

[
   "parent" => [
      "name" => "jhon",
      "surname" => "doe",
   ],
]

当我想用put添加其他值时,例如:

session()->put([
  'parent'=>[
     'gender'=>'male', 
     'phone'=>'000000', 
  ] 
]); 

不,我是session()->all()

[
   "parent" => [
     "gender" => "male", 
     "phone" => "000000",
   ],
]

但我想:

[
   "parent" => [
      "name" => "jhon",
      "surname" => "doe",
      "gender" => "male", 
      "phone" => "000000",
   ],
]

那么如何在不触及旧数据的情况下将其他(多个)数据添加到现有会话数组中?

3 个答案:

答案 0 :(得分:2)

您可以先读取数据,然后再修改并保存。举个例子:

$data = session('parent');

$data['gender'] = 'male';
$data['phone'] = '000000';

session(['parent' => $data]);

答案 1 :(得分:0)

您可以使用session()->push()方法[{3}} 对于例如
1)使用session()->put()

首次放置数据
session()->put([
  'parent'=>[
     'name'=>'jhon', 
     'surname'=>'doe', 
  ] 
]);

2)现在使用session()->push()

推送您要添加的数据
session()->push('parent',[
   'gender'=>'male', 
   'phone'=>'000000', 
]);

答案 2 :(得分:0)

感谢@AlexeyMezenin和@GautamPatadiya的回答我发现这种方式对我来说非常方便。如果这对你来说是错误的,或者你有更好的方法,请更正。

session()->put([
  'parent'=>[
     'name'=>'jhon', 
     'surname'=>'doe', 
  ] 
]); 

然后将自己添加到新数组中,如:

session()->put([
  'parent'=>[
     'gender'=>'male', 
     'phone'=>'000000', 
  ] + session('parent');
]);