Yo tengo una función que me cree para hacer algo parecido (ordenar por cualquier campo del array):
Código PHP:
function OrdenarArray ($ArrayDesordenado, $campo){
$claves = array();
//Guardamos en el array $claves los indices y el campo que queremos ordenar
foreach ($ArrayDesordenado as $clave => $fila){
$claves[$clave] = $fila[$campo];
}
//Ordenamos el array por el contenido, que es el campo que hemos elegido.
asort($claves);
//recorremos el array de claves ya ordenado y vamos rellenando un nuevo array
//con los campos completos con el nuevo orden
//Recorremos el array de claves ordenadas y rellenamos de nuevo nuestro array
foreach ($claves as $clave => $fila){
$this->farmacia[] = $ArrayDesordenado[$clave];
}
}
Espero que te sirva y si tienes alguna duda, me lo comentas a ver si te puedo ayudar en algo.
Saludos