How to set an array in session in codeigniter?
11,241
Solution 1
I could be misreading things, but it looks like you are only storing one value.
// this code:
$used_questions=$questions_for_test[$difficulty_level][$question_id];
$this->session->set_userdata('used_questions',$used_questions);
// is the same as this code
$this->session->set_userdata('used_questions',$questions_for_test[$difficulty_level][$question_id]);
You're probably looking for this:
// fetch the stored copy first.
$used_questions = $this->session->userdata('used_questions');
if(!is_array($used_questions)) $used_questions = array();
// note the []
$used_questions[] = $questions_for_test[$difficulty_level][$question_id];
$this->session->set_userdata('used_questions',$used_questions);
Solution 2
You can set array values in session data like this :-
$this->session->set_userdata('used_questions', json_encode($used_questions));
And retrieve the data as :-
json_decode($this->session->userdata('used_questions'));
If you want the retrieved array data as associative array :-
json_decode($this->session->userdata('used_questions'), true);
Hope it hepls you :)
Author by
nik
Updated on July 23, 2022Comments
-
nik almost 2 years
I am little bit struggling in setting array in session.
Here is my code:-
Controller:
function taketest(){ $this->load->model('', ''); $questions_for_test = $this->session->userdata('questions_for_test'); $difficulty_level = $this->session->userdata('difficulty_level'); $question_id = $this->session->userdata('question_id'); if($question_id==""){ $question_id = $this->myjcat->returnRandomQuestion($questions_for_test,$difficulty_level); $this->session->set_userdata('question_id',$question_id); } $question_details = $this->myjcat->getQuestion($question_id); }
Model:
function returnRandomQuestion($questions_for_test, $difficulty_level){ $question_id = array_rand($questions_for_test[$difficulty_level], 1); $used_question=array(); $used_questions=$questions_for_test[$difficulty_level][$question_id]; $this->session->set_userdata('used_questions',$used_questions); return $questions_for_test[$difficulty_level][$question_id]; }
But when I call:
$used_questions = $this->session->userdata('used_questions');
in controller in the controller it will not return me an array.It gives me last value stored in it.