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);
}