Set::extract 配列を再構成する

Pocket

CakePHPのモデルは必ず特定フォーマットの配列でデータを返す様に出来ている。良く構造化されていて分かりやすいが複雑なので扱いづらい場合も多い。ここではSetクラスを用いて便利にModel配列を再構成する方法を記す。

Set::extract($path, $data)

Model配列は通常以下の様な構造になっている。

User Model配列($users とする)

$users = array(
   array(
      'User' => array(
         'id' => 20938,
         'status' => 1,
         'points' => 346,
         'created' => '2014-01-29 18:33:15',
         'modified' => '2014-06-12 06:00:40',
      )
   )
   array(
      'User' => array(
         'id' => 9347,
         'status' => 2,
         'points' => 187,
         'created' => '2010-06-21 12:14:36',
         'modified' => '2014-06-12 06:00:31',
      )
   )
)

ここで、id値だけの以下の様な単純な配列が欲しいとする。

idのみの配列($ids とする)

$ids = array(
   20938,
   9347
)

これを実装するにはSetクラスで以下の様にするだけでよい。

$ids = Set::extract('{n}/User/id', $users);

たったこれだけだ。

extractの第一引数には取り出したい変数へのパスが設定される。{n}は繰り返し構造の箇所だ。idではなくpointが取り出したい場合は

$ids = Set::extract('{n}/User/point', $users);

とするだけ。いかにも簡単だ。

記事が役に立ったらぜひシェアをお願いします。

Pocket