Una manera que se me ocurre de hacerlo es pasando todos los elementos a positivo, y luego ordenar el array.
así:
Código PHP:
Ver original//Función que transforma valores en positivo
function toAbs(&$element, $key){
$element = abs($element); }
//Este es tu array original sin ordenar
$array_original = array(...);
//Este array lo manipularemos y ordenaremos parar traer los indices ordenados
$copia_array = $array_original;
//Convertir todos los valores de la copia del array en positivos
//ordenar el array con valores positivos
//obtener los indices del array ordenado para acceder a su valor correspondiente en el array original
//en este ciclo recorro los valores ordenados
foreach($sorted_index as $index){
echo $array_original[$index] . "\n";
}
//FIN
No se me ocurre otra manera de hacerlo xD!
si usas una versión de PHP 5.3 o superior también puedes mandar la función como anónima al array_walk
Ojala sea de ayuda esta info. saludos y suerte.