2

私はcakephp2.2.3にこの多次元のassoc$modules配列を持っています:

配列(
    'type1' => array(
        (int)0 => array(
            'name' =>'name16'、
            'タイプ'=>'1'、
            'category' =>'categoryC'、
            'ゾーン'=>'ゾーン1'
        )、
        (int)1 => array(
            'name' =>'name17'、
            'タイプ'=>'1'、
            'category' =>'categoryB'、
            'ゾーン'=>'ゾーン1'
        )、
        (int)2 => array(
            'name' =>'name18'、
            'タイプ'=>'1'、
            'category' =>'categoryA'、
            'zone' =>'zone3'
        )、
        (int)3 => array(
            'name' =>'name19'、
            'タイプ'=>'1'、
            'category' =>'categoryC'、
            'zone' =>'zone3'
        )、
        (int)4 => array(
            'name' =>'name22'、
            'タイプ'=>'1'、
            'category' =>'categoryA'、
            'ゾーン'=>'ゾーン2'
        )。
    )、
    'type2' => array(
        (int)0 => array(
            'name' =>'name1'、
            'タイプ'=>'2'、
            'category' =>'categoryB'、
            'ゾーン'=>'ゾーン2'
        )、
        (int)1 => array(
            'name' =>'name2'、
            'タイプ'=>'2'、
            'category' =>'categoryB'、
            'ゾーン'=>'ゾーン2'
        )、
        (int)2 => array(
            'name' =>'name3'、
            'タイプ'=>'2'、
            'category' =>'categoryA'、
            'ゾーン'=>'ゾーン1'
        )、
        (int)3 => array(
            'name' =>'name4'、
            'タイプ'=>'2'、
            'category' =>'categoryC'、
            'zone' =>'zone3'
        )、
        (int)4 => array(
            'name' =>'name5'、
            'タイプ'=>'2'、
            'category' =>'categoryA'、
            'zone' =>'zone3'
        )。
    )。
)。

そして私はそれを次のように再配置したい

配列(
    'zone1' => array(
        'type1' => array(
            (int)0 => array(
                'name' =>'name17'、
                'タイプ'=>'1'、
                'category' =>'categoryB'
            )、
            (int)1 => array(
                'name' =>'name16'、
                'タイプ'=>'1'、
                'category' =>'categoryC'
            )。
        )、
        'type2' => array(
            (int)0 => array(
                'name' =>'name3'、
                'タイプ'=>'2'、
                'category' =>'categoryA'
            )。
        )。
    )、
    'zone2' => array(
        'type1' => array(
            (int)0 => array(
                'name' =>'name22'、
                'タイプ'=>'1'、
                'category' =>'categoryA'
            )。
        )、
        'type2' => array(
            (int)0 => array(
                'name' =>'name1'、
                'タイプ'=>'2'、
                'category' =>'categoryB'
            )、
            (int)1 => array(
                'name' =>'name2'、
                'タイプ'=>'2'、
                'category' =>'categoryB'
            )。
        )。
    )、
    'zone3' => array(
        'type1' => array(
            (int)0 => array(
                'name' =>'name18'、
                'タイプ'=>'1'、
                'category' =>'categoryA'
            )、
            (int)0 => array(
                'name' =>'name19'、
                'タイプ'=>'1'、
                'category' =>'categoryC'
            )。
        )、
        'type2' => array(
            (int)0 => array(
                'name' =>'name5'、
                'タイプ'=>'2'、
                'category' =>'categoryA'
            )、
            (int)1 => array(
                'name' =>'name4'、
                'タイプ'=>'2'、
                'category' =>'categoryC'
            )。
        )。
    )。   
)。

ここで、「category」は各親の「type」内でアルファベット順にソートする必要があります

で試してみました

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

しかし、成功しませんでした。必要に応じてHash::combineを使用していないと思います...
ありがとう、Marius

4

1 に答える 1

0

Just use a foreach inside a foreach to walk through your array and construct a new one based on your preference.

于 2012-11-26T15:17:19.160 に答える