Monday, November 26, 2012

rearrange multidimensional array in cakephp 2.2

Hi all,
I have this multidimensional assoc $modules array in cakephp 2.2.3:
array(
    'type1' => array(
        (int) 0 => array(
            'name' => 'name16',
            'type' => '1',
            'category' => 'categoryC',
            'zone' => 'zone1'
        ),
        (int) 1 => array(
            'name' => 'name17',
            'type' => '1',
            'category' => 'categoryB',
            'zone' => 'zone1'
        ),
        (int) 2 => array(
            'name' => 'name18',
            'type' => '1',
            'category' => 'categoryA',
            'zone' => 'zone3'
        ),
        (int) 3 => array(
            'name' => 'name19',
            'type' => '1',
            'category' => 'categoryC',
            'zone' => 'zone3'
        ),
        (int) 4 => array(
            'name' => 'name22',
            'type' => '1',
            'category' => 'categoryA',
            'zone' => 'zone2'
        )
    ),
    'type2' => array(
        (int) 0 => array(
            'name' => 'name1',
            'type' => '2',
            'category' => 'categoryB',
            'zone' => 'zone2'
        ),
        (int) 1 => array(
            'name' => 'name2',
            'type' => '2',
            'category' => 'categoryB',
            'zone' => 'zone2'
        ),
        (int) 2 => array(
            'name' => 'name3',
            'type' => '2',
            'category' => 'categoryA',
            'zone' => 'zone1'
        ),
        (int) 3 => array(
            'name' => 'name4',
            'type' => '2',
            'category' => 'categoryC',
            'zone' => 'zone3'
        ),
        (int) 4 => array(
            'name' => 'name5',
            'type' => '2',
            'category' => 'categoryA',
            'zone' => 'zone3'
        )
    )
)

and I want to rearrange it like

array(
    'zone1' => array(
        'type1' => array(
            (int) 0 => array(
                'name' => 'name17',
                'type' => '1',
                'category' => 'categoryB'
            ),
            (int) 1 => array(
                'name' => 'name16',
                'type' => '1',
                'category' => 'categoryC'
            )
        ),
        'type2' => array(
            (int) 0 => array(
                'name' => 'name3',
                'type' => '2',
                'category' => 'categoryA'
            )
        )
    ),
    'zone2' => array(
        'type1' => array(
            (int) 0 => array(
                'name' => 'name22',
                'type' => '1',
                'category' => 'categoryA'
            )
        ),
        'type2' => array(
            (int) 0 => array(
                'name' => 'name1',
                'type' => '2',
                'category' => 'categoryB'
            ),
            (int) 1 => array(
                'name' => 'name2',
                'type' => '2',
                'category' => 'categoryB'
            )
        )
    ),
    'zone3' => array(
        'type1' => array(
            (int) 0 => array(
                'name' => 'name18',
                'type' => '1',
                'category' => 'categoryA'
            ),
            (int) 0 => array(
                'name' => 'name19',
                'type' => '1',
                'category' => 'categoryC'
            )
        ),
        'type2' => array(
            (int) 0 => array(
                'name' => 'name5',
                'type' => '2',
                'category' => 'categoryA'
            ),
            (int) 1 => array(
                'name' => 'name4',
                'type' => '2',
                'category' => 'categoryC'
            )
        )
    )   
)

where it would be nice that 'category' would be sorted alphabetically within each parent 'type'

I tried with

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

but with no success. I guess I'm not using Hash::combine as I should...

Thanks, Marius 

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
 
 

No comments: