【CakePHP2.x】Hashあれこれ
コードがシンプルになる
- 'マッチャ'を使うと細かい条件指定が可能
<?php array(2) { [0]=> array(5) { ["id"]=> string(1) "1" ["label"]=> string(5) "hchuno" ["status"]=> string(6) "有効" } [1]=> array(5) { ["id"]=> string(1) "3" ["label"]=> string(7) "mychuno" ["status"]=> string(6) "無効" } }
↑ここから、idが3のものを抜き出したい場合。
<?php $id = 3; $hoge = hash::extract($配列, "{n}[id=$id]"); /* $配列の中からidが$idと等しいものを抜き出す。 もし、指定したキー(この場合はid)が存在しなくても 空配列が返るだけでWarningが出ない。 */
一気に引っこ抜く
<?php /* 該当するIDをコンマ区切りで列挙した文字列を作る (例)”1,9,76” array( 0 => array( 'MyChuno' => array( 'id' => 38 ) ) ) …のような構造の配列だとする */ // IDを配列から1つずつ抜き出して、結果を継ぎ足していく方法 $ids_liner = ''; foreach ($array_hchuno_ids as $array_hchuno_id) { $ids_liner .= Hash::get($array_hchuno_id, 'MyChuno.id') . ','; } $ids_liner = rtrim($ids_liner, ','); // Hash::extractとimplode()を使って一気に文字列を生成する方法 $ids_liner = implode(',', Hash::extract($array_hchuno_ids, '{n}.MyChuno.id'));