2011-01-21 10 views
11

Tengo una matriz llamada config. Intento hacer eco de una variable de la matriz en la sesión.Variable de matriz de acceso en sesión (CodeIgniter)

que he probado:

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

pero no funciona. ¿Qué pasa con mi sintaxis aquí? Imprimí mi sesión y los elementos están en la matriz de configuración. También lo intenté:

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

No recibo ningún error esta vez, pero tampoco datos.

Respuesta

19

Si config es una matriz. Y el tema es el nombre de cadena de lo que desea obtener de configuración a continuación

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

o

echo $_SESSION[$config['item']]; 

Si config es una matriz dentro de la sesión, primero debe conseguirlo.

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

o

echo $_SESSION['config']['item'] 

Lo siento por mi Inglés.

+0

Tu inglés está bien. Eso hizo el truco. Gracias. – sehummel

+0

buena explicación sus códigos me han ayudado mucho – Yasitha

+0

¿por qué obtengo índice indefinido cada vez que hago '$ abc = $ this-> session-> userdata ('datauser'); echo $ abc ['ID_NUM']; ' –

0

escapar siempre la cadena debe ser de esta manera:

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

Sí, me di cuenta de que tenía un problema de cotización. Pero esto no produce datos, aunque puedo imprimirlo. – sehummel

+0

luego debe ver este http://codeigniter.com/user_guide/libraries/config.html cómo acceder a los valores de configuración de ur –

+0

El conjunto de configuración está en mis datos de usuario. ¿Podrían los dos estar colisionando? – sehummel

9

Si desea utilizar la matriz sesión, utilice la variable, no la función:

echo $this->session->userdata['user_data']['item']; 

Si desea escribir:

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

Esto le permite editar los valores en la matriz tal y como lo hace con $ _SESION ['user_data'] ['avatar'] = $ avatar, con 'solo' una línea adicional y solo utilizando la biblioteca de CI.

Cuestiones relacionadas