Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/03/2008, 14:33
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Pregunta Array ordenador de otro array

Amigos: hice un programa que determina la frecuencia con la que aparece una palabra en un texto. Para esto tengo un array de palabras y otro de pesos

El array de palabras no-repetidas es $palabras_no_rep

Logro determinar el peso de cada palabra pero luego no puedo ordenar la matriz $palabras_no_rep por pesos. Se entiende ?

Les dejo el codigo para ver que se puede hacer (gracias desde ya!)

Código PHP:
<?php
$str 
"La casa es blanca en casi todos lados. Mi casa es verde porque asi me gusta a mi. Hi!, como va la hipoteca de tu casa?";

// unifico
$str strtolower($str);

// Limipio de caracteres indeseables
$nostr = array(".",",",";","!","?");
For (
$i=0;$i<count($nostr);++$i){
  
$str str_replace ($nostr[$i]," ",$str);
}
////////////////////////////////

$palabras = array();
$palabras explode (" ",$str); // puede haber repetidas

/// elimino (casi todos) los elementos vacios del array
For ($i=0;$i<count($palabras);++$i){
  If ( 
strlen($palabras[$i])==0)
  
array_splice ($palabras,$i,1); // elimino elemento del array
}

$palabras_no_rep = array();
$pesos = array();

For (
$i=0;$i<count($palabras);++$i){
  If ( !
in_array($palabras[$i],$palabras_no_rep)){      
       
$palabras_no_rep[count($palabras_no_rep)]= $palabras[$i];
       
$pesos[$palabras[$i]]=1;
    }else{
       ++
$pesos[$palabras[$i]];
    }  
}

echo 
"$str <p/>";

For (
$i=0;$i<count($palabras_no_rep);++$i){
  If ( 
strlen($palabras_no_rep[$i])>0  )
  echo 
"La palabra: <b>".$palabras_no_rep[$i]."</b> tiene un peso de ".$pesos[$palabras_no_rep[$i]]." y una longitud de".strlen($palabras_no_rep[$i])."<br/>";  
}


?>
__________________
Salu2!

Última edición por Italico76; 26/03/2008 a las 14:42