在会话中访问数组变量(CodeIgniter)

seh*_*mel 11 codeigniter

我有一个名为config的数组.我正在尝试在会话中回显数组中的变量.

我试过了:

echo $this->session->userdata('config['item']'); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.这里我的语法有什么问题?我打印了我的会话,这些项目都在配置数组中.我也尝试过:

echo $this->session->userdata("config['item']");
Run Code Online (Sandbox Code Playgroud)

这次我没有错误,但也没有数据.

小智 19

如果config是一个数组.而item是你想从配置中获得的字符串名称

echo $this->session->userdata($config['item']);
Run Code Online (Sandbox Code Playgroud)

要么

echo $_SESSION[$config['item']];
Run Code Online (Sandbox Code Playgroud)

如果config是会话内的数组,你应该先得到它.

$tmp = $this->session->userdata('config');
echo $tmp['item'];
Run Code Online (Sandbox Code Playgroud)

要么

echo $_SESSION['config']['item'] 
Run Code Online (Sandbox Code Playgroud)

对不起我的英语不好.


Aur*_*ien 9

如果要使用会话数组,请使用变量,而不是函数:

echo $this->session->userdata['user_data']['item'];
Run Code Online (Sandbox Code Playgroud)

如果你想写:

$this->session->userdata['user_data']['item'] = 'value';
$this->session->userdata['other_data']['other'] = 'value2';
$this->session->sess_write();
Run Code Online (Sandbox Code Playgroud)

这允许您编辑数组中的值,就像使用$ _SESION ['user_data'] ['avatar'] = $ avatar一样,只使用一个额外的行并仅使用CI库.