【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'));