Доступ к переменной массива в сеансе (CodeIgniter)
У меня есть массив, называемый config. Я пытаюсь выполнить эхо переменную из массива в сеансе.
Я пробовал:
echo $this->session->userdata('config['item']');
но это не сработает. Что не так с моим синтаксисом здесь? У меня print_r'd мой сеанс, и элементы находятся в массиве config. Я также пробовал:
echo $this->session->userdata("config['item']");
На этот раз я не получаю ошибок, но нет данных.
Ответы
Ответ 1
Если config - массив. И item - это строковое имя того, что вы хотите получить из config, а затем
echo $this->session->userdata($config['item']);
или
echo $_SESSION[$config['item']];
Если config - это массив внутри сеанса, вы должны сначала его получить.
$tmp = $this->session->userdata('config');
echo $tmp['item'];
или
echo $_SESSION['config']['item']
Извините за мой английский.
Ответ 2
Если вы хотите использовать массив сеансов, используйте переменную, а не функцию:
echo $this->session->userdata['user_data']['item'];
Если вы хотите написать:
$this->session->userdata['user_data']['item'] = 'value';
$this->session->userdata['other_data']['other'] = 'value2';
$this->session->sess_write();
Это позволяет редактировать значения в массиве так же, как вы делаете с $_SESION ['user_data'] ['avatar'] = $avatar, с "единственной" дополнительной строкой и только с использованием библиотеки CI.
Ответ 3
Всегда избегать строки, это должно быть так:
echo $this->session->userdata('config[\'item\']');