我正在尝试将一些数据推送,删除或更新到L5会话数组中。
我的代码:
$id = $request->input('id');
$type = $request->input('type');
$removeEvent = $request->input('removeEvent');
if($request->session()->has('event')){
$events = $request->session()->get('event');
$request->session()->forget('event'); //forget and create new session
for($i=0; $i<count($events['id']); $i++){
if($events['id'][$i] == $id&& $events['type'][$i] == $type && $removeEvent == 'true'){ //delete
}elseif($events['id'][$i] == $id&& $events['type'][$i] != $type){ //update
$request->session()->push('event.id', $events['id'][$i]);
$request->session()->push('event.type', $type);
}else{
$request->session()->push('event.id', $id);
$request->session()->push('event.type', $type);
}
}
}else{
$request->session()->push('event.id', $id);
$request->session()->push('event.type', $type);
}**
$request->session()->save();
当我要发布ID和类型时,如果 id 在会话中且类型不同,我想更新它或者removeEvent为true然后删除,如果它不会在会议上推动它。那么,我是否必须搜索整个数组或者是否有快速的方法来执行这些操作?
更新: 我为这整个代码做了一个快速的方法。
$check = $request->session()->has('event.'.$id);
if ($check == 1 && $removeEvent == "true") {
$request->session()->forget('event.'.$id);
} elseif ($check == 1){
$request->session()->put('event.'.$id, $type);
} else {
$request->session()->put('event',
array_add($event= $request->session()->get('event'), $id, $type));
}
答案 0 :(得分:0)
这是如何将您的所有活动保留在一个会话中的。
/* I'm using the event ID as keys for easy query.
$events = [
64543 => ['id' => 64543, 'type' => 'A'],
345345 => ['id' => 345345, 'type' => 'B']
];
*/
$id = $request->input('id');
$type = $request->input('type');
$removeEvent = $request->input('removeEvent', false); // false by default
$sessionkey = 'events';
$events = Session::get($sessionkey);
// Remove an event or add/update
if ($removeEvent)
unset($events[$id]);
else
$events[$id] = ['id' => $id, 'type' => $type];
Session::put($key, $events);