Foros del Web » Programando para Internet » PHP »

Problemas con ordenacion array sort();

Estas en el tema de Problemas con ordenacion array sort(); en el foro de PHP en Foros del Web. Hola muy buenas, Tengo un pequeño problema, quiero ordenar un array numericamente pero me lo hace así. 100 10 110 120 130 20 30 40 ...
  #1 (permalink)  
Antiguo 11/05/2011, 13:43
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 17 años, 1 mes
Puntos: 4
Problemas con ordenacion array sort();

Hola muy buenas,

Tengo un pequeño problema, quiero ordenar un array numericamente pero me lo hace así.

100
10
110
120
130
20
30
40
50
60
70

el script:

Código PHP:

$orden 
= array('10','20','30',..........);
sort($orden); 
Muchas gracias
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #2 (permalink)  
Antiguo 11/05/2011, 13:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 10 años, 1 mes
Puntos: 25
Respuesta: Problemas con ordenacion array sort();

prueba asi
Código PHP:
Ver original
  1. $orden = array(1 => '10','20','30',..........);
  2. sort($orden);
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 11/05/2011, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Problemas con ordenacion array sort();

El problema es que PHP esta comparando los datos como strings, si los dejas como enteros no tendrás ese problema.

Saludos.
  #4 (permalink)  
Antiguo 11/05/2011, 14:31
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 1 mes
Puntos: 334
Respuesta: Problemas con ordenacion array sort();

es necesario que los transformes a string :S ?

Código PHP:
Ver original
  1. $array = array(10, 110, 30, 40, 100, 60, 120, 80, 90, 50, 20, 70);
  2. sort($array);
  3. print_r($array);
si los dejas como enteros no tendrias problema

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 12/05/2011, 10:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 23
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problemas con ordenacion array sort();

Como se dice antes, PHP está interpretando los datos como string y no como números. Para cambiar eso, debes poner un flag.

Trata esto

Código PHP:
$orden = array('10','20','30',..........);
sort($ordenSORT_NUMERICSORT_ASC); 
Esto va a interpretar los datos como numéricos y los va a ordenar de manera ascendente, si quieres lo contrario cambia SORT_ASC por SORT_DESC


Saludos :)
  #6 (permalink)  
Antiguo 12/05/2011, 15:28
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Problemas con ordenacion array sort();

hola buenas el script

Código PHP:
<?php
$orden 
= array('10','20','30');
sort($ordenSORT_NUMERICSORT_ASC);  
?>
Me indica el siguiente error:
Warning: sort() expects at most 2 parameters, 3 given in C:\xampp\htdocs\ayuda_php\php\sort - Ordenar arrays.php on line 3

Gracias
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #7 (permalink)  
Antiguo 12/05/2011, 15:36
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.650
Antigüedad: 11 años, 9 meses
Puntos: 336
Respuesta: Problemas con ordenacion array sort();

sort solo recibe máximo 2 parametros, el error te lo indica:

sort($orden);
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 13/05/2011, 01:10
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Problemas con ordenacion array sort();

Hola muy buenas

Me indicas que solo puedo poner

SORT_NUMERIC "o" SORT_ASC?

Código PHP:
sort($ordenSORT_NUMERICSORT_ASC); 
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #9 (permalink)  
Antiguo 13/05/2011, 01:39
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 9 años, 1 mes
Puntos: 48
Respuesta: Problemas con ordenacion array sort();

Cita:
Iniciado por syntex Ver Mensaje
hola buenas el script

Código PHP:
<?php
$orden 
= array('10','20','30');
sort($ordenSORT_NUMERICSORT_ASC);  
?>
Me indica el siguiente error:
Warning: sort() expects at most 2 parameters, 3 given in C:\xampp\htdocs\ayuda_php\php\sort - Ordenar arrays.php on line 3

Gracias
Si lo lees dice que la funcion sort solo puede tener 2 parametros y le estas dando 3, solo hacemos esto:
Código PHP:
<?php
$orden 
= array('10','60','30');
sort($ordenSORT_NUMERIC);
print_r($orden);
?>

Etiquetas: ordenacion, sort
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.