CakePHP2のセッションに格納した情報から配列データを参照したい場合

こんにちは。オガリア開発チームの粂です。

CakePHPのバージョン:2.4

セッションのShopがitemsという配列を持っていて、そのうちの任意のitemのname、さらにすべてのitemのnameをひっぱってきたい場合を仮定します。少しはまりました。せっかくなのでブログに書いておきます。

まず、任意のitemのnameをひっぱってくる場合。
ここでは1番目のitemのnameを参照することを想定します。以下の書き方ではひっぱってこれない。

$this->Session->read('Shop.items[0].name');

こう書かないといけない。

$this->Session->read('Shop.items.0.name');

さらにすべてのitemのnameを配列として受け取りたい場合。
このケースでは、CakePHPのコアライブラリであるHashのextractメソッドが大変便利です。

Hash::extract($this->Session->read('Shop'), 'items.{n}.name');

肝はitems.{n}.nameという書き方でしょうか。extractメソッドは使いこなせるようになっておきたいですね。

最後までお読みいただきありがとうございました!

Pocket