Set::extract()の小洒落た使い方 case.1
たまには軽いネタを。もしかしたら連載するかも
<?php $users = array( array( 'User' => array( 'id' => 1, ), ), array( 'User' => array( 'id' => 2, ), ), array( 'User' => array( 'id' => 3, ), ), );
のとき、
<?php $ids = Set::extract('/User/id', $users);
とすると
<?php $ids = array( 1, 2, 3, );
となります。これは結構標準的な使い方ですね。
<?php $data = array( 'PreviousUser' => array( 'id' => 1, ), 'User' => array( 'id' => 2, ), 'NextUser' => array( 'id' => 3, ), );
ここで、
<?php array( 'PreviousUser' => 1, 'User' => 2, 'NextUser' => 3, );
というふうに取り出したいとします。
<?php $ids = Set::extract('{.+?}.id', $data);
これで取り出せちゃいます。XPathのやり方はちょっと思いつきませんでした。誰か教えて!
なお、{}の間には正規表現が指定できます。柔軟ですね!