我有一个数组,我正在尝试使用Hash::combine对其进行重构。
这是我的阵列
Array
(
[0] => Array
(
[T1] => Array
(
[second] => APPLES
[Color] => GREEN
[Color_en] => #99cc66
[nombre] => 56
)
)
[1] => Array
(
[T1] => Array
(
[second] => APPLES
[Color] => BLUE
[Color_en] => #0099ff
[nombre] => 678
)
)
[2] => Array
(
[T1] => Array
(
[second] => BANANAS
[Color] => GREEN
[Color_en] => #99cc66
[nombre] => 366
)
)
[3] => Array
(
[T1] => Array
(
[second] => BANANAS
[Color] => BLUE
[Color_en] => #0099ff
[nombre] => 2000
)
)
)
我想要实现的是下面的阵列:
Array
(
[0] => Array
(
[0] => Array
(
[y] => 56
[color] => #99cc66
)
[1] => Array
(
[y] => 678
[color] => #0099ff
)
)
)
[1] => Array
(
[0] => Array
(
[y] => 366
[color] => #99cc66
)
[1] => Array
(
[y] => 2000
[color] => #0099ff
)
)
)
所以第一个数组是"APPLES",第二个是"BANANAS","y"是"nombre","Color_en"变成"Color"。
我用Hash::combine尝试了很多不同的方法,但我不知道如何做到这一点。
这超出了Hash::combine()
的范围。不能使用它来重命名数组索引。
你可以做的最接近的事情是通过{n}.T1.second
组合数组值,将结果分组在一起,如下所示:-
Hash::combine($array, '{n}.T1.nombre', '{n}.T1', '{n}.T1.second');
对于您想要实现的目标,您需要使用foreach
循环自行重建阵列。类似这样的东西:-
$data = [];
foreach ($array as $value) {
$data[$value['T1']['second']][] = [
'y' => $value['T1']['nombre'],
'color' => $value['T1']['Color_en']
];
}