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而删除功能。