2

我在 cakephp 2.2.3 中有这个多维 assoc $modules 数组:

大批(
    'type1' => 数组(
        (int) 0 => 数组(
            '名称' => 'name16',
            '类型' => '1',
            '类别' => '类别C',
            '区域' => '区域1'
        ),
        (int) 1 => 数组(
            '名称' => 'name17',
            '类型' => '1',
            '类别' => '类别B',
            '区域' => '区域1'
        ),
        (int) 2 => 数组(
            '名字' => 'name18',
            '类型' => '1',
            '类别' => '类别A',
            '区域' => '区域3'
        ),
        (int) 3 => 数组(
            '名字' => 'name19',
            '类型' => '1',
            '类别' => '类别C',
            '区域' => '区域3'
        ),
        (int) 4 => 数组(
            'name' => 'name22',
            '类型' => '1',
            '类别' => '类别A',
            '区域' => '区域2'
        )
    ),
    'type2' => 数组(
        (int) 0 => 数组(
            '名称' => '名称1',
            '类型' => '2',
            '类别' => '类别B',
            '区域' => '区域2'
        ),
        (int) 1 => 数组(
            '名称' => '名称2',
            '类型' => '2',
            '类别' => '类别B',
            '区域' => '区域2'
        ),
        (int) 2 => 数组(
            '名称' => '名称3',
            '类型' => '2',
            '类别' => '类别A',
            '区域' => '区域1'
        ),
        (int) 3 => 数组(
            '名称' => '名称4',
            '类型' => '2',
            '类别' => '类别C',
            '区域' => '区域3'
        ),
        (int) 4 => 数组(
            '名称' => '名称5',
            '类型' => '2',
            '类别' => '类别A',
            '区域' => '区域3'
        )
    )
)

我想重新排列它

大批(
    'zone1' => 数组(
        'type1' => 数组(
            (int) 0 => 数组(
                '名称' => 'name17',
                '类型' => '1',
                '类别' => '类别B'
            ),
            (int) 1 => 数组(
                '名称' => 'name16',
                '类型' => '1',
                '类别' => '类别C'
            )
        ),
        'type2' => 数组(
            (int) 0 => 数组(
                '名称' => '名称3',
                '类型' => '2',
                '类别' => '类别A'
            )
        )
    ),
    'zone2' => 数组(
        'type1' => 数组(
            (int) 0 => 数组(
                'name' => 'name22',
                '类型' => '1',
                '类别' => '类别A'
            )
        ),
        'type2' => 数组(
            (int) 0 => 数组(
                '名称' => '名称1',
                '类型' => '2',
                '类别' => '类别B'
            ),
            (int) 1 => 数组(
                '名称' => '名称2',
                '类型' => '2',
                '类别' => '类别B'
            )
        )
    ),
    'zone3' => 数组(
        'type1' => 数组(
            (int) 0 => 数组(
                '名字' => 'name18',
                '类型' => '1',
                '类别' => '类别A'
            ),
            (int) 0 => 数组(
                '名字' => 'name19',
                '类型' => '1',
                '类别' => '类别C'
            )
        ),
        'type2' => 数组(
            (int) 0 => 数组(
                '名称' => '名称5',
                '类型' => '2',
                '类别' => '类别A'
            ),
            (int) 1 => 数组(
                '名称' => '名称4',
                '类型' => '2',
                '类别' => '类别C'
            )
        )
    )   
)

其中“类别”应在每个父“类型”中按字母顺序排序

我试过了

$modules = Hash::combine($modules, '{n}', '{n}.{n}', '{s}.{s}.{n}.zone');

但没有成功。我想我没有像我应该使用的那样使用 Hash::combine ......
谢谢,Marius

4

1 回答 1

0

只需在 foreach 中使用 foreach 遍历您的数组并根据您的偏好构建一个新数组。

于 2012-11-26T15:17:19.160 回答