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;

由于投票范围 - 就其性质而言 - 从零开始,您不必担心下边界并且可以简化您的计算。;)


解释:

$number_of_votes(10) 与 $max_number_of_votes(12) 相关,因为所讨论的值 ($display) 与 $max_display_votes (5) 相关。在数学中:

$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 回答