0

これがこの質問をするのに適切な場所であるかどうかはわかりませんが、ここでは主にphpで作業していますが、どの言語のansでもかまいません。

ウェブサイトのタグクラウドを作成しています。このようなもの

数字の配列があるとしましょう

array(54, 67, 68, 72, 98, 103, 112, 136, 169, 200, 201)

この数字は、Webサイトで単語が検索された回数を表します。

タグクラウドでは、人気のあるキーワードをより大きなフォントサイズで表示したいと思います。だから私はこの数字をフォントサイズへのリンクとして使いたいです

だから私の質問は、これらの数を互いに相対的に減らして、すべてが10から20の範囲で発生するようにするにはどうすればよいですか?ここで、10と20はタグのフォントサイズになります

私は十分に明確だったと思います。

4

2 に答える 2

3

これがフィドルです。

<?php

$values = array(54, 67, 68, 72, 98, 103, 112, 136, 169, 200, 201);

$max = max($values);
$min = min($values);

$fontMin = 10;
$fontMax = 20;

$valueDiff = $max - $min;
$fontDiff = $fontMax - $fontMin;
$incrementEvery = round($valueDiff / $fontDiff);

foreach ($values as $value) {
    $actualFont = round(($value - $min) / $incrementEvery) + $fontMin;
    echo "$value: $actualFont \n";
}

結果:

54: 10 
67: 11 
68: 11 
72: 11 
98: 13 
103: 13 
112: 14 
136: 15 
169: 18 
200: 20 
201: 20

ワンライナーは次のとおりです。

round(($value - $min) / round(($max - $min) / ($fontMax - $fontMin))) + $fontMin;
于 2013-01-11T20:50:00.640 に答える
1

PHP 関数 sort() [http://php.net/manual/en/function.sort.php] を使用して配列をソートし、最大値と最小値の差を取得できます。たとえば、リストでは 201 が最高で 54 が最低で、147 の差が生じます。10 から 20 までの範囲が必要なので、使用するフォント サイズが 10 あります (小数を使用する場合はそれ以上)。 147 を 10 で割って、font-size を 1 ポイント増やすために必要な最小項目数を決定します。

したがって、54 は 10 ポイントのフォントになり、68 は 11 ポイントのフォントになります (54 + 14.7 = 68.7)。整数を使用したい場合は、単純に PHP floor() を使用してください。

これにより、問題を解決する方法の良いアイデアが得られることを願っています。

于 2013-01-11T20:19:46.723 に答える