Доступ к переменной массива в сеансе (CodeIgniter) - PullRequest
11 голосов
/ 21 января 2011

У меня есть массив с именем config.Я пытаюсь отобразить переменную из массива в сеансе.

Я пробовал:

echo $this->session->userdata('config['item']'); 

, но это не работает.Что не так с моим синтаксисом здесь?Я print_r'd мою сессию, и элементы находятся в массиве конфигурации.Я также попробовал:

echo $this->session->userdata("config['item']");

На этот раз я не получаю ошибок, но также и никаких данных.

Ответы [ 3 ]

19 голосов
/ 21 января 2011

Если 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'] 

Извините за мой английский.

9 голосов
/ 24 января 2011

Если вы хотите использовать массив сессии, используйте переменную, а не функцию:

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.

0 голосов
/ 21 января 2011

Всегда избегайте строки, это должно быть так:

echo $this->session->userdata('config[\'item\']'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...