Как рассчитать средний балл по звездной рейтинговой системе?

Я разрабатываю звездную рейтинговую систему с 1-5 звездами. В моей базе данных я сохраняю их так:

$stars_1 = 1;
$stars_2 = 6;
$stars_3 = 3;
$stars_4 = 11;
$stars_5 = 22;

$total_votes = 43

Когда пользователь голосует, используя, например, 3 звезды, я обновляю stars_3 на 1 и total_votes на 1. Затем мне нужно рассчитать средний рейтинг (звезды).

Я делаю это прямо сейчас, но я не работаю (результат кажется неправильным):

(($stars_1 + $stars_2 + $stars_3 + $stars_4 + $stars_4) / $total_votes);

person Jonathan Clark    schedule 19.03.2012    source источник
comment
В чем разница между $stars_1 и $stars_5, если в конце их усреднить? $stars_1 и $stars_5 играют одну и ту же роль.   -  person Anton Sementsov    schedule 19.03.2012


Ответы (2)


Должно быть так:

($stars_1 + $stars_2 * 2 + $stars_3 * 3 + $stars_4 * 4 + $stars_5 * 5) / $total_votes;
person McGarnagle    schedule 19.03.2012

Вам нужно умножить количество звезд на фактический рейтинг. Нравиться

$points_stars_2 = $stars_2 * 2  
...  
$points_stars_5 = $stars_5 * 5 

И затем вы складываете их все в одну переменную, как в вашем коде, а затем делите ее на $total_votes.

С уважением

person Tobias    schedule 19.03.2012