【CakePHP2.x】セッション変数へ数字の添え字をつける2014-12-06

CakePHPのSessionコンポーネントでセッション変数に数字の添え字をつけることが
なかなかできなかったので備忘録として残しておくことにする。
もしかするともっといい方法があるのかもしれないが…

生PHPでやる$_SESSION["hoge"][ ]のようなものをつくりたかったのだが
ググってみても、CakePHPのSessionコンポーネントでできる方法が見当たらなかった。
なので、下のようなものを作ってみた。
※CakePHPのセッションコンポーネントでは "hoge[ ]" とか "hoge". [ ] のような形では使えない。
 "hoge.0" のようにドットで数字と繋ぐ形にしないといけない。

if($this -> Session -> check("num")){
    $num = $this -> Session -> read("num") + 1;
    $this -> Session -> write("num", $num);
 }else{
    $num = 0;
    $this -> Session -> write("num", 0);
 }

  要するに、添え字となる数字自体を任意のセッション変数「num」に格納しておき、必要に応じて呼び出すもの
 
  $i = $this -> Session -> read("num");
   $this -> Session -> write("hoge.$i", array("hogehoge1" => "データ1", "hogehoge2" => "データ2", "hogehoge3" => "データ3"));

  こうすると、phpの$_SESSIONでいうところの
 
  $_SESSION["hoge"][0] = array(…);

  と同じことになり、データはセッション変数「hoge」の添え字「0」に格納される。

  下のような感じ

array(1) {
     ["hoge"]=> array(2) {
           ["0"]=> array(3) {
                ["hogehoge1"]=> string(4) "データ1"
                ["hogehoge2"]=> string(4) "データ2"
                ["hogehoge3"]=> string(4) "データ3" 
           }
           ["1"]=> array(3) {
            …
           }
     }
}

セッション変数に添え字を使いたい時、意外とCakePHPのセッションコンポーネントではハマりやすい。