Io uso questa funzione
Codice PHP:
/**
 *    Ordina un array multidimensionale rispetto ad un indice
 *
 *    @param    array     $array    array da ordinare
 *    @param    string    $on    nome dell'indice in base a cui ordinare
 *    @param    costant    $order    SORT_ASC/SORT_DESC per indicare il verso dell'ordinamento
 *
 *    @return    l'array ordinato
 */
public function array_sort($array$on$order=SORT_ASC)
{
    
$new_array = array();
    
$sortable_array = array();

    if (
count($array) > 0) {
        foreach (
$array as $k => $v) {
            if (
is_array($v)) {
                foreach (
$v as $k2 => $v2) {
                    if (
$k2 == $on) {
                        
$sortable_array[$k] = $v2;
                    }
                }
            } else {
                
$sortable_array[$k] = $v;
            }
        }

        switch (
$order) {
            case 
SORT_ASC:
                    
asort($sortable_array);
            break;
            case 
SORT_DESC:
                
arsort($sortable_array);
            break;
        }

        foreach (
$sortable_array as $k => $v) {
            
$new_array[$k] = $array[$k];
        }
    }

    return 
array_values($new_array);