2011-01-12 43 views
2

繼續從這個主題link textCodeigniter會話的數組操作

嗨,大家好。我正在使用codeigniter並希望將數據存儲在會話中。我有這樣的陣列

array(4) { 
[0]=> array(2) { ["DESC"]=> string(1) "A" ["SUBFUNCTION_ID"]=> string(3) "904" } 
[1]=> array(2) { ["DESC"]=> string(1) "B" ["SUBFUNCTION_ID"]=> string(3) "903" } 
[2]=> array(2) { ["DESC"]=> string(1) "C" ["SUBFUNCTION_ID"]=> string(3) "902" } 
[3]=> array(2) { ["DESC"]=> string(1) "D" ["SUBFUNCTION_ID"]=> string(3) "901" } 
} 

這是存儲會話數據

$data = array(
'username' => $this->input->post('username'), 
'userid' => $query->USER_ID,  
'role' => $query->ROLE_ID,  
'is_logged_in' => true 

)的陣列;

我該如何操作第一個數組,然後將數據追加到第二個數組中?我希望它變成這樣的東西

$data = array(
'username' => $this->input->post('username'), 
'userid' => $query->USER_ID,  
'role' => $query->ROLE_ID,  
'is_logged_in' => true, 
'A' => 904, 
'B' => 903, 
'C' => 902, 
'D' => 901 

);

在此先感謝

回答

0

這聽起來像你有在$foo形式的會話數據,並開始數據$data

$foo = array (
    array('DESC'=>'A', 'SUBFUNCTION_ID'=>904), 
    array('DESC'=>'B', 'SUBFUNCTION_ID'=>903), 
    array('DESC'=>'C', 'SUBFUNCTION_ID'=>902), 
    array('DESC'=>'D', 'SUBFUNCTION_ID'=>901), 
); 

$data = array(
    'username' => $this->input->post('username'), 
    'userid' => $query->USER_ID,  
    'role' => $query->ROLE_ID,  
    'is_logged_in' => true 
); 

要合併在數據從$foo$data按照您的要求,循環所有值$foo,然後將它們追加到$data

foreach($foo as $bar) { 
    $data[$bar['DESC']] = $bar['SUBFUNCTION_ID']; 
} 
2

獲取數組並處理它。

$user_array = $this->session->userdata('your_user_data'); 

foreach ($your_array as $sub_array) 
{ 
    $user_array[$sub_array['DESC']] = $sub_array['SUBFUNCTION_ID']; 
} 

$this->session->set_userdata('your_user_data', $user_array); 

您將有這樣的事情:

$數據= $這個 - >會話級>用戶數據( 'your_user_data');

$data = array(
'username' => $this->input->post('username'), 
'userid' => $query->USER_ID,  
'role' => $query->ROLE_ID,  
'is_logged_in' => true, 
'A' => 904, 
'B' => 903, 
'C' => 902, 
'D' => 901 
) 
1

如果密鑰是不同的,你可以添加陣列:$arr = $arr1 + $arr2;