Can';我的Hash::combine不能在CakePHP中正确使用

Can';我的Hash::combine不能在CakePHP中正确使用,php,arrays,cakephp,hash,Php,Arrays,Cakephp,Hash,我有一个数组,我正试图用Hash::combine重新建模 这是我的阵列 Array ( [0] => Array ( [T1] => Array ( [second] => APPLES [Color] => GREEN [Color_en] => #99cc66

我有一个数组,我正试图用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
                )

            )
        )
所以第一个数组是“苹果”,第二个数组是“香蕉”,“y”是“nombre”,“Color_en”变成“Color”


我用Hash::combine()尝试了很多不同的方法,但我不知道如何做到这一点。

这超出了
Hash::combine()
的范围。你不能用它来重命名数组索引

您可能要做的最接近的事情是通过
{n}.T1.second
将数组值组合在一起,如下所示:-

Hash::combine($array, '{n}.T1.nombre', '{n}.T1', '{n}.T1.second');
$data = [];
foreach ($array as $value) {
    $data[$value['T1']['second']][] = [
        'y' => $value['T1']['nombre'],
        'color' => $value['T1']['Color_en']
    ];
}
对于您试图实现的目标,您需要使用
foreach
循环自己重建阵列。类似如下:-

Hash::combine($array, '{n}.T1.nombre', '{n}.T1', '{n}.T1.second');
$data = [];
foreach ($array as $value) {
    $data[$value['T1']['second']][] = [
        'y' => $value['T1']['nombre'],
        'color' => $value['T1']['Color_en']
    ];
}

非常感谢您的回复。如果我将nombre重命名为“y”,将Color_en重命名为“Color”(显然,将Color重命名为其他类似“x”)该怎么办?这一切都来自一个数据库,因此对我来说很容易做到。那么是否可以使用Hash::combine()重命名数据库中的列以获得
Hash::combine()
工作听起来有点像是一种倒退的方法,让某些东西工作起来并不理想。我仍然不认为它能帮助你实现你想要的目标。
Hash::combine()
在许多情况下都非常有用,但我认为这不是一个不让事情变得过于复杂的正确解决方案。在一天结束时,
散列
实用程序将在您的数组中迭代,因此如果您可以使用自定义的
foreach
轻松实现所需的结果,我会这样做。我会为您的解决方案。非常感谢您的帮助!