Set::classicExtract()CakePHP 2.x Hash::alternative

Set::classicExtract()CakePHP 2.x Hash::alternative,php,cakephp,cakephp-2.x,Php,Cakephp,Cakephp 2.x,我有这样一个数组: $array = array( 1234 => array( 'title' => 'TitleA', 'extra' => array( 45 => 'SubA', 54 => 'SubB', ), // More irrelevant data ), 2345 => array( 'ti

我有这样一个数组:

$array = array(
    1234 => array(
        'title' => 'TitleA',
        'extra' => array(
            45 => 'SubA',
            54 => 'SubB',
        ),
        // More irrelevant data
    ),
    2345 => array(
        'title' => 'TitleB',
        'extra' => array(
            89 => 'SubC',
            98 => 'SubD',
        ),
        // More irrelevant data
    ),
);
我使用:

$data = Set::classicExtract($array, '{\d+}.title');
要获得如下所示的数组:

array(1234 => 'TitleA', 2345 => 'TitleB');
array(
    1234 => array(
        45 => 'SubA',
        54 => 'SubB',
    ),
    2345 => array(
        89 => 'SubC',
        98 => 'SubD',
    ),
)
以及:

要获得如下所示的数组:

array(1234 => 'TitleA', 2345 => 'TitleB');
array(
    1234 => array(
        45 => 'SubA',
        54 => 'SubB',
    ),
    2345 => array(
        89 => 'SubC',
        98 => 'SubD',
    ),
)
既然Set::class已经被弃用了一段时间(从2.2开始,我们使用2.8),我想使用Hash::class。但我找不到一个能给出相同结果的函数。我尝试了Hash::extract()和Hash::combine(),但都没有成功


对于Hash::类,这可能吗?

我正在做一些类似的工作。并没有找到任何其他解决方案,只是如何将数组元素的键设置为数组本身。所以刚刚创建了helper来将
\u key
设置为数组:

array_walk($array, function(&$item, $key){
    $item['_key'] = $key;
});
然后一切都变得简单:

$result = Hash::combine($array, "{n}._key", "{n}.title");
以及:


不,我正在尝试使用CakePHP 2.x中的Hash::类从数组中提取数据。(文档:)这是一个可行的解决方案。谢谢你的回答。我希望CakePHP没有因为不推荐Set::class而删除功能。