Удаление элементов из массива сеансов Laravel

im пытается удалить элементы из массива сеансов Laravel, но пока не повезло.

Я сохраняю свои значения в массиве Session с помощью метода Session :: push ():

Session::push('event_date_display', Input::get('event_date')); Session::push('event_start_display', Input::get('event_start')); Session::push('event_entry_display', Input::get('event_entry')); Session::push('event_end_display', Input::get('event_end')); 

Я могу получить доступ к таким значениям, как обычные массивы:

  @for($i=0;$i<Session::get('dates');$i++) <tr> <td>{{ Session::get('event_date_display')[$i] }}</td> <td>{{ Session::get('event_start_display')[$i] }}</td> <td>{{ Session::get('event_entry_display')[$i] == '' ? '-' : Session::get('event_entry_display')[$i] }}</td> <td>{{ Session::get('event_end_display')[$i] == '' ? '-' : Session::get('event_end_display')[$i] }}</td> <td><a href="{{URL::route('termin-loeschen', $i)}}" class="del"><span class="icon-spam"></span>Loeschen {{ $i }}</a></td> </tr> @endfor 

Но я не могу понять, как их удалить. Я попробовал Session :: forget ('event_date_display') [$ index], но это удалит весь массив. Затем я попробовал зацикливание и отключение, которое тоже не работает. Любая помощь приветствуется.

Related of "Удаление элементов из массива сеансов Laravel"

Когда вы вызываете Session::forget('event_data_display')[$index] , нет никакой точки, в которой эта переменная $index передается в метод forget() . Поэтому Laravel не увидит его и отключит весь индекс event_data_display массива Session.

Чтобы отменить значение в этом индексе, вам, вероятно, нужно будет сделать что-то вроде этого:

 $event_data_display = Session::get('event_date_display'); unset($event_data_display[$index]); Session::set('event_data_display', $event_data_display); с $event_data_display = Session::get('event_date_display'); unset($event_data_display[$index]); Session::set('event_data_display', $event_data_display); 

Сессия Laravel поддерживает добавление массивов с помощью указанного индекса:

 Session::push('user.teams', 'developers'); 

Таким образом, вы также можете получить доступ к этому индексу массива следующим образом:

 Session::forget('event_data_display.' . $i); 

Я не пробовал, но это стоит того.

Когда вы вызываете Session::get('event_data_display')[$i] , причина в том, что PHP извлекает значение массива из Session::get('event_data_display') до того, как он ищет значение, хранящееся в индексе $i ,

Когда вы вызываете Session::forget('event_data_display') , метод forget() может действовать только на то, что ему передается.

Мне кажется, что вы пытаетесь удалить значение из array хранящегося в sessions . Для этого я бы подумал, что вы хотите сделать стандартный массив unset($array[$key]) .

Таким образом, это будет что-то вроде unset(Session::$array[$key]); Я верю.

Просто используйте ниже код, чтобы удалить всю сессию в laravel

$ Request-> сессия () -> вровень ();