2017-03-24 10 views
1

行配列[ 'データ'] [1]セッションに保存理由上書きセッション行の新しいアレイCodeIgniterの

$ses['data'][1]['nama']= 'test'; 
    $set = $this->session->set_userdata('data',$ses); 
    $get = $this->session->userdata('data'); 

    for ($i=0; $i < count($get); $i++) { 
     print_r($get); 
    } 

結果

アレイ ( [1] =>配列 ( [NAMA] =>試験 ) )

。 。 。

問題Iは、配列[ 'データ']行[2]

$ses['data'][2]['nama']= 'test'; 
$set = $this->session->set_userdata('data',$ses); 
$get = $this->session->userdata('data'); 

for ($i=0; $i < count($get); $i++) { 
    print_r($get); 
} 

結果:

アレイ([2] =>アレイ([NAMA] =>テスト))


私はアレイ(

が異なる時間

[2]と同じ時間にsesionを節約するために、配列は

[ 'データ']を設定していない[1] & [ 'データ']でなりたいです[1] =>アレイ([NAMA] =>試験) [2] =>アレイ([NAMA] =>試験))

答えて

0

配列が上書きなっているように見えます。 単一のアレイにあなたの2つの要素を組み合わせて、その後にそれを供給してください。

$ses=array(1=>array('nama'=>'test'),2=>array('nama'=>'test2')); 

たり、新しいセッションで古いセッション(複数可)をマージしたい場合は...

// if later in the code, meaning $ses is already filled 
$ses[2]['nama']='test2'; // new one 
$set=$this->session->set_userdata('data',$ses); 

// or if no $ses declared, you need to re-get 
$ses[2]['nama']='test2'; // new one 
$ses=array_merge_recursive($this->session->userdata('data'),$ses); // merge with old one(s) 
$set = $this->session->set_userdata('data',$ses); // set new combined array 

それ私の暫定的な資料や例では、配列の最初のレベルに自由に新しいデータを追加することができますが、それより深いレベルを変更しようとすると、setは最初のレベルに注目し、前のサブアレイを上書きします新しいもの


いくつかの考えた後、私の上記の試みは十分に効率的ではないとarray_merge_recursiveは不要です。

$data_array=$this->session->userdata('data'); // retrieve session's current data subarray 
$data_array[2]['nama']='test2' // append new data to $data_array 
$set_session=$this->session->set_userdata('data',$data_array); // set fresh array 
$get=$this->session->userdata('data'); // retrieve new session data for checking 
foreach($get as $g){ 
    print_r($g); // check that session data is as expected 
} 
+0

最初にセッションに['data'] [1]を挿入したい、次にセッションに['data'] [2]を挿入したい。 ---------- は設定しない同じ時刻にセージオンを保存するには['data'] [1]&['data'] [2] ---------- と結果:array ['data] [1]、[' data '] [2]など... –

+0

@Maxthinksは私の 'array_merge_recursive'メソッドはあなたのために働きますか? – mickmackusa

+0

ありがとう、マージ配列のこの素晴らしい方法、ありがとう@mickmackusa –

0

以下のようにしてみてください:

$ses['data'][1]['nama']= 'test'; 
$this->session->set_userdata('data',$ses); 
//$get = $this->session->userdata('data'); 
$ses['data'][2]['nama']= 'test'; 
$this->session->set_userdata('data',$ses); 
$get = $this->session->userdata('data'); 
print_r($get); 

出力

Array 
(
    [data] => Array 
     (
      [1] => Array 
       (
        [nama] => test 
       ) 

      [2] => Array 
       (
        [nama] => test 
       ) 

     ) 

) 
+0

は、最初のiは---------- ...など、[2]のセッションに[ 'データを'] [1]セッションに、次のI挿入したい[ 'データ']を挿入したいです ---------- と結果:array ['data] [1] [' data '] [1]と[' data '] [2]は同時にセションを保存しません。 ]、['data'] [2]など... –

+0

編集済みの回答を試してください。 –

関連する問題