Tag Cloud en PHP

Necesitaba hoy de un tag cloud sencillo en php y encontré muchos ejemplos que no se me hicieron muy buenos, así que programé uno. Se los dejo para que lo usen:

/**
$wordlist en la forma array('palabra1' => array('numero' => 5), 'palabra2' => array('numero' => 3))
*/
function tagCloud($wordlist, $fmax) {
	//esto sive para que el tamaño minimo de la letra sea 10px
	if($fmax < 20) {
            $fmax = 10;
 	} else {
	     $fmax -= 10;
        }
        //primera recorrida para obtener el maximo y el minimo
        $tmin = 0;
        $tmax = 0;
        foreach($wordlist as $key => $value) {
		if($value['numero'] > $tmax || $tmax == 0)
			$tmax = $value['numero'];
		if($value['numero'] < $tmin || $tmin == 0)
                        $tmin = $value['numero'];
         }
         foreach($wordlist as $key => $value) {
		if($value['numero'] > $tmin) {
                        $si = ceil(($fmax * ($value['numero'] - $tmin) / ($tmax - $tmin)))+10;
                } else {
			$si = 10;
		}
		$wordlist[$key]['size'] = $si;
	}
	return $wordlist;
}

Su uso es bastante sencillo. Tenemos que meter todos los elementos a un array de la siguiente forma:

$wordlist = array('palabra1' => array('numero' => 5), 'palabra2' => array('numero' => 3));
//30 es el tamaño máximo de la letra
$wordlist = tagCloud($wordlist, 30);
foreach($wordlist as $key => $value) {
     echo '<span style="font-size: '.$value['size'].'px;">'.$key.'</span> ';
}

Nótese que en el array podemos meter los valores que queramos y que necesitemos, sólo debe estar presente la llave llamada numero.

Me basé en el artículo de wikipedia: http://en.wikipedia.org/wiki/Tag_cloud

Deja un comentario