1

私は、評価システムを統合するために使用されるphpで小さなクラスを作成しようとしていますが、おそらく単純な問題で立ち往生しています。0から5の間の評価を表示したいのですが、投票は1から10または1から12のような任意の間隔にすることができます。たとえば、間隔が1から12で、合計スコア/合計投票が6の場合、実際に2.5を表示します私は現在これを使用しています

$rating = number_format(round(($total_score/$total_votes)*2)/2,1);

では、0〜5の間隔でのみ値を表示するようにするにはどうすればよいですか?

4

2 に答える 2

0
$fromminrate = 1;
$frommaxrate = 12;
$tominrate = 0;
$tomaxrate = 5;
$rating = $tominrate + (
     ((($total_score/$total_votes)-$fromminrate)
     / ($frommaxrate-$fromminrate))
     * ($tomaxrate-$tominrate));
于 2013-03-05T20:42:39.610 に答える
0

次のような単純なパーセンテージ計算を使用します。

<?php

$number_of_votes = 10; // real votes
$max_number_of_votes = 12; // vote range
$max_display_votes = 5; // display range

$perc = $max_display_votes * $number_of_votes / $max_number_of_votes;
$display = intval(round($perc)); // optional, round and convert to int

echo $display;

投票範囲は、その性質上、ゼロから始まるため、下の境界線について心配する必要はなく、計算を簡素化できます。;)


説明:

問題の値($ display)は$ max_display_votes(5)に関連しているため、$ number_of_votes(10)は$ max_number_of_votes(12)に関連しています。数学では:

$number_of_votes / $max_number_of_votes == $display / $max_display_votes;

または例では:

10 / 12 = $display / 5;

この項は、5を掛けることで変換できます。

10 * 5 / 12 = $display;

そしてそれは私の'式'です;)

于 2013-03-05T20:51:01.737 に答える