【问题标题】:Star rating system calculation星级系统计算
【发布时间】:2014-11-04 07:19:45
【问题描述】:

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

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

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

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

获取每个速率的百分比的原因是我想创建一个类似于 Google Playstore 中的进度速率。

【问题讨论】:

  • 是的,在我的数据库中,我可以保存多少用户以特定比率投票。但我还需要获取每个费率的百分比,并获得所有费率的总汇总百分比。
  • 这是我的 php 通过我的数据库生成的结果

标签: php


【解决方案1】:

如果你想通过数组来做,你可以试试这个使用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)== 这将产生总票数。如果您已经有总票数。只需将array_sum($your_array_name) 替换为Total Votes

【讨论】:

  • 在我的 rate_5 中我已经有 4 个所以这意味着 (4/array_sum(rate_5)) * 100?
  • 这个过程是为了获取个人费率百分比还是总体?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    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

    所以投票的用户数将是(0/7)*100,即0%

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

    因此投票More Improvement的用户数量将是(1/7)*100,即14.29%

    等等。

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

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

    【讨论】:

    • 谢谢,我会努力的。这对我有很大帮助。 :)
    • 是的,N 是单个产品的总票数,与评分无关。
    • votesOfRate1 应该是 Boo 选项的投票数,而不是总数。
    • 你的意思是,如果我的比率为 1 到 5,那么 Boo 的值为 1,那么强烈推荐为 5?
    • @Jerielle,检查我编辑的答案。希望您能通过示例更好地理解。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多