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