CakePHPのCake/UtilityHash

 唐突だがここに以下のような形態のArrayがあったとする。

        $array = array(
                    'testA' => array(
                        'test1' => 1,
                        'test2' => 2,
                        'test3' => array(
                            'testa' => 'a',
                        ),
                    ),
                    'testB' => array(
                        'test4' => 3,
                        'test5' => 4,
                        'test6' => array(
                            'testb' => 'b',
                            'testc' => 'c',
                        ),
                    ),
                    'testC' => '5',
                );

 これで、3階層目のa、b、cだけを取得したいとする。単純な話だ。なのにどうして。こんなことになってしまうではないか。

        foreach($array as $a){
            if(!is_array($a)){
            } else {
                foreach($a as $b){
                    if(!is_array($b)){
                    } else {
                        foreach($b as $c){
                            echo $c;
                        }
                    }
                }
            }
        }

だがCakePHPのHashを使うと以下のように一発である。

Hash::extract($array, '{s}.{s}.{s}');

すばらしい。