Gracias por sus comentarios, aunque me funcionan las dos (considerando la de javierav un ejemplo de multisort). No funcionan cuando hago una función sea la que ordena. No entiendo por qué puede pasar esto.
Código PHP:
$m[1]["nombre"]="bruno";
$m[2]["nombre"]="Alejandro";
$m[3]["nombre"]="Marcos";
$m[1]["edad"]=21;
$m[2]["edad"]=24;
$m[3]["edad"]=17;
$m[1]["altura"]=175;
$m[2]["altura"]=181;
$m[3]["altura"]=167;
$ordenar = 'nombre';
$dir = 'ASC';
function ordenar($m,$ordenar,$dir) {
usort($m, create_function('$item1, $item2', 'return strtoupper($item1[\'' . $ordenar . '\']) ' . ($direccion === 'ASC' ? '>' : '<') . ' strtoupper($item2[\'' . $ordenar . '\']);'));
return $m;
}
$m=ordenar($m,$ordenar,$dir);