Foros del Web » Programando para Internet » PHP »

Ordenar alfabeticamente

Estas en el tema de Ordenar alfabeticamente en el foro de PHP en Foros del Web. Hola a todos antes que nada, mi pregunta se basa principalmente en que tengo un arreglo con los siguientes elementos: Código PHP: $arreglo =array( "Verde" ...
  #1 (permalink)  
Antiguo 18/01/2005, 15:54
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 2 meses
Puntos: 0
Exclamación Ordenar alfabeticamente

Hola a todos antes que nada, mi pregunta se basa principalmente en que tengo un arreglo con los siguientes elementos:

Código PHP:
$arreglo=array("Verde","Rojo","Blanco","Negro","azul"); 
Ahora todos esos elementos los quiero ordernar alfabeticamente, lo que hago es esto:

Código PHP:
sort($arreglo); 
Y el resultado que me da es esto:

Blanco
Negro
Rojo
Verde
azul

Por lo que veo la funcion sort(); hace comparaciones entre mayusculas y minusculas,
pero yo necesito saber ¿Como hacer para ordenarlos alfabeticamente sin que haga estas distinciones?,
osea tener algo asi:

azul
Blanco
Negro
Rojo
Verde

Espero que me me hayan entendido y puedan ayudarme a resolver esto, de ante mano muchas Gracias..


__________________
"El conocimiento se debe de compartir"
  #2 (permalink)  
Antiguo 18/01/2005, 16:02
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 8 meses
Puntos: 0
Y que tal si antes de meter la palabras en el array las ponemos todas en minúsculas?
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 18/01/2005, 16:03
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 21 años, 4 meses
Puntos: 2
Hola elmasca
Estas son las funciones de ordenacion de matrices

Orden ascendente por valor del elemento sort(array matriz)
Orden descendente por valor del elemento rsort(array matriz)

para matrices asociativas

Orden ascendente por valor del elemento asort(array matriz)
Orden descendente por valor del elemento arsort(array matriz)
Orden Ascendente por clave ksort(array matriz)
Orden Descendente por clave krsort(array matriz)

Espero que te sirva. saludos
  #4 (permalink)  
Antiguo 18/01/2005, 16:06
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 8 meses
Puntos: 0
acabo de encontrar una función interesante:

natcasesort()

prueba con ella.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 19/01/2005, 16:19
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 2 meses
Puntos: 0
Muchas gracias a todos los que se molestaron en ayudarme, por otra parte quiero decirles que ya me salio y gracias a DjNelson por darme una idea.
La solucion fue esta:

DjNelson me propuso que probara con una funcion la cual es natcasesort, bueno pues esta funcion si ordena el arreglo sin distinguir mayusculas y minusculas, lo malo es que no ordena los indices del arreglo y pues a la hora de imprimir los elementos del arreglo no me los mostraba ordenados.
Bueno pues investigue y para que los elementos salieran ordenados y tambien se ordenaran los indices solo tuve que hacer est:

Código PHP:
$arreglo=array("Verde","Rojo","Blanco","Negro","azul");

usort($arreglo,"strnatcasecmp");

for(
$x=0;$x<count($arreglo);$x++)
 echo 
$arreglo[$x]."<br>"
y el resultado es:

azul
Blanco
Negro
Rojo
Verde

Ocupe dos funciones: usort y strnatcasecmp, la primera funcion sirve para ordenar el arreglo por valores utilizando los criterios definidos en la función y modificando los índices, y la segunda funcion sirve para comparar cadenas insensible a mayúsculas y minúsculas usando un algoritmo de "orden natural".

Espero que esto le pueda ayudar a alguien mas.......

Gracias a todos
__________________
"El conocimiento se debe de compartir"
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 11:01.