Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/06/2012, 21:26
Avatar de Ribon
Ribon
 
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: Ordenar Array por proximidad al 0

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
  1. //Función que transforma valores en positivo
  2. function toAbs(&$element, $key){
  3.     $element = abs($element);
  4. }
  5.  
  6. //Este es tu array original sin ordenar
  7. $array_original = array(...);
  8.  
  9. //Este array lo manipularemos y ordenaremos parar traer los indices ordenados
  10. $copia_array = $array_original;
  11.  
  12. //Convertir todos los valores de la copia del array en positivos
  13. array_walk($copia_array, 'toAbs');
  14.  
  15. //ordenar el array con valores positivos
  16. asort($copia_array);
  17.  
  18. //obtener los indices del array ordenado para acceder a su valor correspondiente en el array original
  19. $sorted_index = array_keys($copia_array);
  20.  
  21. //en este ciclo recorro los valores ordenados
  22. foreach($sorted_index as $index){
  23.     echo $array_original[$index] . "\n";
  24. }
  25.  
  26. //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

Código PHP:
Ver original
  1. array_walk($array_copia, function(&$element, $key){
  2.     $element = abs($element);
  3. });


Ojala sea de ayuda esta info. saludos y suerte.
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)