2014-12-09 3 views
0

Как проверить, существует ли значение в массиве сеанса? Я пытаюсь хранить активные древовидные объекты в массиве сеанса для включения и выключения их:Laravel, проверьте, имеет ли массив сеанса значение

public function postSelected() 
{ 
    $id = Input::get('id'); 
    if (Session::has('user.selection', $id)) { // check? 
     Session::pull('user.selection', $id); 
    } else { 
     Session::push('user.selection', $id); 
    } 

    return Response::json(Session::get('user.selection'), 200); 
} 

Любые идеи?

ответ

3

Предполагая, что вы пытаетесь сделать, это сродни тумблер (удалить, если нет, добавить, если отсутствует):

$index = array_search($id, $selection = Session::get('user.selection', [])); 

if ($index !== false) 
{ 
    array_splice($selection, $index, 1); 
} 
else 
{ 
    $selection[] = $id; 
} 

Session::set('user.selection', $id); 
+0

легко! Каковы эти скобки в конце сеанса? Сделал трюк, спасибо! Я уже пробовал in_array, но я не был успешным. – wiesson

+0

@wiesson - Эти скобки представляют собой короткие обозначения массива (это эквивалентно 'array()', что создает пустой массив). В принципе, это гарантирует, что вы имеете дело с массивом. –

+0

Массив_pull не удалит нужный элемент из моего массива. Что-нибудь особенное, я должен заметить? – wiesson

Смежные вопросы