Ordenando una gran matriz multidimensional

Tengo un gran conjunto que contiene los siguientes datos:

Array ( [2] => Array ( [Berlin] => Array ( [1] => Array ( [0] => stdClass Object ( [name] => Joe [car_name] => Audi [car_color] => Black [sid] => 130 ) [1] => stdClass Object ( [name] => Mark [car_name] => BMW [car_color] => Red [sid] => 135 ) ) [0] => Array ( [0] => stdClass Object ( [name] => Lucas [car_name] => Audi [car_color] => Yellow [sid] => 168 ) [1] => stdClass Object ( [name] => Joe [car_name] => Volkswagen [car_color] => Black [sid] => 170 ) [2] => stdClass Object ( [name] => Thomas [car_name] => Ford [car_color] => Gray [sid] => 119 ) ) ) [Moscow] => Array ( [1] => Array ( [0] => stdClass Object ( [name] => Matt [car_name] => Mustang [car_color] => Black [sid] => 230 ) [1] => stdClass Object ( [name] => Suze [car_name] => Lada [car_color] => Red [sid] => 245 ) ) [0] => Array ( [0] => stdClass Object ( [name] => Lucas [car_name] => Unknown [car_color] => Brown [sid] => 374 ) [1] => stdClass Object ( [name] => Mathew [car_name] => Volkswagen [car_color] => Blue [sid] => 589 ) [2] => stdClass Object ( [name] => Thomas [car_name] => Ford [car_color] => Light Blue [sid] => 741 ) ) ) ) ) 

Ahora me gustaría ordenarlo así (por favor, lea las // líneas):

 Array ( [2] => Array //from min to max - eg. from 0 to 50 ( [Berlin] => Array //alphabetically from A to Z ( [1] => Array //from min to max eg. from 0 to 1 ( ) ) ) ) 

¿Cómo puedo lograr esto en PHP? Espero haber sido lo suficientemente claro, no dude en preguntar en los comentarios por la información adicional.

Sería algo como esto:

 // ksort sorts the keys low to high ksort($array[2]); // uksort w/ natsort is a full alphanumeric sorting A-Z0-9 uksort($array[2]['Berlin'], 'natsort'); ksort($array[2]['Berlin'][1]); 

Documentación en Array y Array Functions:

http://us3.php.net/manual/en/book.array.php

Ejemplo funcional

Este ejemplo es real específico para su ejemplo; sin embargo, podría hacer una función recursiva de estilo si su estructura de matriz es realmente dinámica.

 $BigArray = array(); //Sorting the initial array index ksort($BigArray); foreach($BigArray as $a) { // Sorting Berlin / Moscow here.. uksort($a, 'natsort'); foreach($a as $b) { // Sorting the index inside the cities ksort($b); } } 

La forma más compacta es usar una función recursiva. Esto también le permitirá reutilizarlo en matrices de diferentes dimensiones en otros lugares de su código.

 function SortArray($arr) { if(!is_array($InnerArray)) return; foreach($arr as $InnerArray) { SortArray($InnerArray); } ksort($arr); } SortArray($array);