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