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のやり方はちょっと思いつきませんでした。誰か教えて!
なお、{}の間には正規表現が指定できます。柔軟ですね!