Foros del Web » Programando para Internet » PHP »

ordenar array problema con sort?

Estas en el tema de ordenar array problema con sort? en el foro de PHP en Foros del Web. Hola a todos. He creado un glosario de unos términos tecnicos que salen en las descripciones de unas especies. El código es este: Código PHP: ...
  #1 (permalink)  
Antiguo 30/10/2006, 10:05
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
ordenar array problema con sort?

Hola a todos. He creado un glosario de unos términos tecnicos que salen en las descripciones de unas especies.

El código es este:
Código PHP:
                        <?
                        $palabrasdesc
=explode(" "$descripcion);
                        
sort($palabrasdesc);
                        
$comprobarglosarioraiz sprintf("SELECT raiz FROM glosario");
                        
$comprobacion mysql_query($comprobarglosarioraiz$Astur) or die(mysql_error());
                        
$posicion=0;
                        while (
$recorrerglo=mysql_fetch_assoc($comprobacion)) {
                            
$blancaraiz=$recorrerglo['raiz'];
                            
                            for (
$a=0;$a<count ($palabrasdesc);$a++){
                                if (
strlen($palabrasdesc[$a]) > 4) {
                                if (
stristr($palabrasdesc[$a],$blancaraiz)){ 
                                    
$glosario[$posicion]=$blancaraiz;
                                    
$posicion=$posicion+1;
                                    }}
                            }
                        }
                        
                        
$glosariofinal=array_unique($glosario);
                        
sort($glosariofinal);
                        
reset ($glosariofinal);
                        for (
$b=0;$b<count ($glosariofinal);$b++){
                            
$raizglosario=$glosariofinal[$b];
                            
$glosarioficha sprintf("SELECT * FROM glosario WHERE raiz = '".$raizglosario."'");
                            
$glosariofichaconsulta mysql_query($glosarioficha$Astur) or die(mysql_error());
                            while (
$glosariolistadoficha=mysql_fetch_assoc($glosariofichaconsulta)) {                
                                echo 
"<strong>".$glosariolistadoficha['termino'].":</strong> ".$glosariolistadoficha['definicion']."<br/>";
                                }
                         }
                        
?>
creo un array con la descripción, las palabras, y luego miro si contienen la raíz del término que figura en el glosario, por ejemplo caducifol para (caducifolia, caducifolio, caducifolias,...)

estas palabras que tienen la raiz las guardo en otro array que luego limpio los duplicados y ordeno, y luego hago una consulta a la base de datos pàra extraer la definicion de dicho término

El problema, como podeis ver en http://www.asturnatura.com/Consultas...mbucus%20nigra, en la parte de abajo donde pone glosario, es que normalmente descoloca las palabras primeras y ultimas al estar ordenadas alfabeticamente.
¿Alguna idea de porque pasa esto?

Gracias de antemano
  #2 (permalink)  
Antiguo 30/10/2006, 10:09
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
las palabras que empiezan por una letra con tilde las coloca al final, ordenaditas, pero fuera de sitio, debe ser que la funcion sort tiene en cuenta la tilde
  #3 (permalink)  
Antiguo 30/10/2006, 10:10
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 21 años
Puntos: 4
y por que no ocupas order by asc en la consulta de mysql?
  #4 (permalink)  
Antiguo 30/10/2006, 14:02
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
Había probado y pasa lo mismo. El problema estaría en el sort que es quien ordena al final el array, creo yo.
  #5 (permalink)  
Antiguo 30/10/2006, 17:21
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 20 años, 9 meses
Puntos: 0
Bueno, he llegado a la conclusión de que necesito una función que ordene las palabras teniendo en cuenta las tildes de la primera letra. Lo que sale, es una lista nomal ordenada alfabéticamente tras la cual ocurre lo mismo con las que tienen tilde:

Abeja
Ala
Amanita
Barco
Moneda
Portería
Árbol

Eso es lo que me sale con el 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 21:22.