Вычисление веса тега с использованием логарифма

По мотивам http://habrahabr.ru/blogs/webdev/30543/ себе на заметку.

Вычисляем вес тега в облаке с использованием логарифма. Зачем?

Здесь всего лишь кусок кода. Аргументы и рассуждения по ссылке выше.

[php]
class Tag extends BaseTag
{
/**
*
* @param array $options массив с максимальным (max), минимальным (min) значением
* и колчиеством градаций (levels)
* @return int [1,levels]
*/
public function getWeight(array $options)
{
if (!isset($this->nb_posts) || !isset($options[‘max’]) || !isset($options[‘min’]) || !isset($options[‘levels’]))
{
return 1;
}
else {
$options[‘min’] = log($options[‘min’] + 1);
$options[‘max’] = log($options[‘max’] + 1);
return round(
1
+ (log($this->nb_posts + 1) – $options[‘min’])
* ($options[‘levels’] – 1)
/ ($options[‘max’] – $options[‘min’] )
);
}
}
}
[/php]

4 Comments

  1. Tark says:

    Спасибо за интересный способ!

    К сожалению, если вес очень сильно разнится, то получается все равно не очень красиво… Если минимальный вес – 1, а максимальный 80000, то облако тегов выглядит немного некрасиво, каким бы не был установлен параметр levels. Решить проблему удалось, но все равно как-то не так)))

    $size = round(1 + (log($tag_amount + 1) – $min) * ($levels – 1) / ($max – $min)) * 38;

    $tag_content .= “$tag “;

    levels установлен в 8. Смотрится неплохо)

    Еще раз спасибо)

  2. Tark says:

    Суман!
    Жестко ступил, можно ведь полученные значения использовать в названии класса. Приношу свои извинения, способ просто чудесный!

  3. Xdezzz says:

    Указывайте ссылки с http а не ttp )))

Leave a Reply

You must be logged in to post a comment.