星级评分系统计算

时间:2014-11-04 07:19:46

标签: php

我正在为我的电子商务创建一个简单的评级系统。我有一个评论页面,用户可以在表格中对产品进行评分。我可以保存已经的费率,但我不知道如何计算这个。这是我的样本数据。

Array
(
    [rate_1] => 0 // total user voted for rate 'boo'
    [rate_2] => 1 // total user voted for rate 'more improvement'
    [rate_3] => 0 // total user voted for rate 'its ok'
    [rate_4] => 2 // total user voted for rate 'i recommend this'
    [rate_5] => 4 // total user voted for rate 'i highly recommend this'
)

这是一个简单的图表:

rate_1 = Boo
rate_2 = More Improvement
rate_3 = It's OK
rate_4 = I recommend this
rate_5 = I highly recommend this

我想要的是获得每个费率的百分比。选择'Boo'等的百分率是多少。

最后获得所有这些的汇总百分比。

获得每种费率的百分比的原因是我想创建一个类似于Google Play商店中的进度率。

3 个答案:

答案 0 :(得分:2)

如果您想通过数组

,可以尝试使用array_sum
($your_array_name['rate_1']/array_sum($your_array_name))*100;

价值说明

$your_array_name['rate_1'] == rate_1

的投票数量

array_sum($your_array_name) == 这将产生总投票数。如果你已经有总票数。只需将{{1>}替换为总票数

即可

答案 1 :(得分:1)

在数据库中,您可以保存总评分和用户投票的数量 而不仅仅是计算评级:

$perProduct = product.totalRating / product.totalVotes
$totalRatingOfProduct = product.totalRating / SUM(product.totalVotes)

答案 2 :(得分:1)

N为单个产品的评分总数。

这里有您的样本数据:

Array
(
    [rate_1] => 0 // total user voted for rate 'boo'
    [rate_2] => 1 // total user voted for rate 'more improvement'
    [rate_3] => 0 // total user voted for rate 'its ok'
    [rate_4] => 2 // total user voted for rate 'i recommend this'
    [rate_5] => 4 // total user voted for rate 'i highly recommend this'
)

N将为0+1+0+2+4 == 7

rate_1(Boo)的百分比为(votesOfRate1/N)*100

投票 Boo 的用户数量为(0/7)*100 0%

rate_2(更多改进)的百分比为(votesOfRate2/N)*100

投票更多改进的用户数量为(1/7)*100 14.29%

等等。

如果您想计算单个产品的平均评分,请执行加权和平均值:

AverageRating = ((1*votesOfRate1)+(2*votesOfRate2)+(3*votesOfRate3)+(4*votesOfRate4)+(5*votesOfRate5))/N