Multidimensional Array Sort

I have a multidimensional array that looks like this:

Array
(
    [1001] => Array
        (
            [0] => 1
            [1] => WS-C3750X-48P-L
            [2] => FDO1545V0RV
        )

    [1058] => Array
        (
            [0] => Switch 1 - Power Supply 0
            [1] => C3KX-PWR-715WAC
            [2] => DTN1538K18A
        )

    [1061] => Array
        (
            [0] => Switch 1 - Power Supply 1
            [1] => C3KX-PWR-715WAC
            [2] => DTN1543K0TW
        )

    [1062] => Array
        (
            [0] => Switch 1 - FRULink Slot 1 - FRULink Module
            [1] => C3KX-NM-10G
            [2] => FDO15491CPT
        )

    [1069] => Array
        (
            [0] => GigabitEthernet1/1/1
            [1] => 1000BaseSX SFP
            [2] => FNS15381WET
        )

    [2001] => Array
        (
            [0] => 2
            [1] => WS-C3750X-24P-L
            [2] => FDO1545Z0WL
        )

    [2034] => Array
        (
            [0] => Switch 2 - Power Supply 0
            [1] => C3KX-PWR-715WAC
            [2] => DTN1538K1GK
        )

    [2035] => Array
        (
            [0] => Switch 2 - Power Supply 1
            [1] => C3KX-PWR-715WAC
            [2] => DTN1543K0XH
        )

    [2038] => Array
        (
            [0] => Switch 2 - FRULink Slot 1 - FRULink Module
            [1] => C3KX-NM-10G
            [2] => FDO15431SK8
        )

    [2045] => Array
        (
            [0] => GigabitEthernet2/1/1
            [1] => 1000BaseSX SFP
            [2] => FNS15370HV5
        )

)

I’d like to sort the arrays alphabetically by the string in key 0 in the innermost array so the array ends up like this:

Array
(
    [1001] => Array
        (
            [0] => 1
            [1] => WS-C3750X-48P-L
            [2] => FDO1545V0RV
        )

	[2001] => Array
        (
            [0] => 2
            [1] => WS-C3750X-24P-L
            [2] => FDO1545Z0WL
        )
	
	[1069] => Array
        (
            [0] => GigabitEthernet1/1/1
            [1] => 1000BaseSX SFP
            [2] => FNS15381WET
        )
	
	[2045] => Array
        (
            [0] => GigabitEthernet2/1/1
            [1] => 1000BaseSX SFP
            [2] => FNS15370HV5
        )
	
	[1062] => Array
        (
            [0] => Switch 1 - FRULink Slot 1 - FRULink Module
            [1] => C3KX-NM-10G
            [2] => FDO15491CPT
        )
	
    [1058] => Array
        (
            [0] => Switch 1 - Power Supply 0
            [1] => C3KX-PWR-715WAC
            [2] => DTN1538K18A
        )

    [1061] => Array
        (
            [0] => Switch 1 - Power Supply 1
            [1] => C3KX-PWR-715WAC
            [2] => DTN1543K0TW
        )
	
	[2038] => Array
        (
            [0] => Switch 2 - FRULink Slot 1 - FRULink Module
            [1] => C3KX-NM-10G
            [2] => FDO15431SK8
        )
	
    [2034] => Array
        (
            [0] => Switch 2 - Power Supply 0
            [1] => C3KX-PWR-715WAC
            [2] => DTN1538K1GK
        )

    [2035] => Array
        (
            [0] => Switch 2 - Power Supply 1
            [1] => C3KX-PWR-715WAC
            [2] => DTN1543K0XH
        )

)

Any help is greatly appreciated!

There is a php function array_multisort() for sorting multidimensional array or multiple arrays. But in your case array structure does not allow to use this function directly.

I would suggest to split your current array into 3 (actually 4, if you need to maintain key associations), like this:
[php] // assuming $a is the initial array from your post above
$b = array(); $c = array(); $d = array(); $i = array();
foreach($a as $key=>$arr){
$b[] = $arr[0];
$c[] = $arr[1];
$d[] = $arr[2];
$i[] = $key;
}[/php]

And then you can sort all the arrays by values from array $b:
[php] array_multisort($b, SORT_STRING, $c, $d, $i);[/php]

And finally, if you need to return to your initial array format, just do this:
[php] $a = array();
foreach($i as $index=>$key){
$a[$key] = array();
$a[$key][0] = $b[$index];
$a[$key][1] = $c[$index];
$a[$key][2] = $d[$index];
}[/php]

Hope this helps.

Thank you so much! That worked perfectly

Sponsor our Newsletter | Privacy Policy | Terms of Service