Логарифмическое облако тегов

<?php
/**
 * Логарифмическое облако тегов
 * автор: Nc_Soft
 * 22.01.09
 */

/*
Допустим, имеем теги и частоту их встречаемости
тег1 5
тег2 6
тег3 9
тег4 2
тег5 8
тег6 13
тег7 1
тег8 16
....
*/

//эти данные обычно берутся из бд, тут же я проимитирую их массивом
$tags=array(
'тег1'=> 5,
'тег2'=> 6,
'тег3'=> 9,
'тег4'=> 2,
'тег5'=> 8,
'тег6'=> 13,
'тег7'=> 1,
'тег8'=> 16,
);

$minSize=10; //минимальный размер шрифта
$maxSize=26; //максимальный размер шрифта

$minWeight=min($tags); //минимальный вес тега
$maxWeight=max($tags); //максимальный вес тега

$tegi=array();

//вычислим размер шрифта тегов
foreach ($tags as $tag=>$tagWeight) {
	
	//шрифт по логарифмическому закону
	$font= floor( (log($tagWeight + 1) - log($minWeight + 1)) / (log($maxWeight + 1) - log($minWeight + 1)) * ($maxSize - $minSize) + $minSize );
	
	//добавим в массив
	$tegi[]='<a href="" style="font-size:'.$font.'px">'.$tag.'</a>';
}

//теперрь перетасуем и выведем
shuffle($tegi);

echo implode('<br />',$tegi);

/*
кому интресно что получилось могут запустить :)
*/

?>