<?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);
/*
кому интресно что получилось могут запустить :)
*/
?>