Set::classicExtract() CakePHP 2.x 哈希::替代
Set::classicExtract() CakePHP 2.x Hash:: alternative
我有一个这样的数组:
$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');
并且:
$data = Set::classicExtract($array, '{\d+}.extra');
要获得如下数组:
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:: class 这甚至可能吗?
我在做一些类似的工作。没有找到任何其他解决方案,只是如何将数组元素的键设置为数组本身。所以刚刚创建了帮助程序以将 _key
设置为数组:
array_walk($array, function(&$item, $key){
$item['_key'] = $key;
});
那么一切就变得简单了:
$result = Hash::combine($array, "{n}._key", "{n}.title");
和:
$result = Hash::combine($array, "{n}._key", "{n}.extra");
我有一个这样的数组:
$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');
并且:
$data = Set::classicExtract($array, '{\d+}.extra');
要获得如下数组:
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:: class 这甚至可能吗?
我在做一些类似的工作。没有找到任何其他解决方案,只是如何将数组元素的键设置为数组本身。所以刚刚创建了帮助程序以将 _key
设置为数组:
array_walk($array, function(&$item, $key){
$item['_key'] = $key;
});
那么一切就变得简单了:
$result = Hash::combine($array, "{n}._key", "{n}.title");
和:
$result = Hash::combine($array, "{n}._key", "{n}.extra");