根据评论计算5星的评分

时间:2019-04-20 11:37:26

标签: php

我的评论很好,而我的评论不好。我需要根据此评论来计算评分。

示例:

  • 帖子1有1条好评论,还有2条差评
  • 第2条帖子有12条好评,还有5条差评
  • 第3条评论有0条好评论和0条差评

如何计算评分?我需要邮政获得5星。我需要得分不超过5星。我可能需要这个公式吗?

$score = ($good_reviews * $bad_reviews) / 5; //get rating stars

但是我没有得到5个或更少的数字。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

该公式无法满足您的需求。它只会乘以乘以乘以乘以5,然后除以5。例如((100乘以20乘以20)/ 5)=400。从5中淘汰!

如果您需要得分不超过5星,则需要使用范围。

计算好坏之间的百分比,然后进行if检查。

例如:

$percentage = (($good - $bad) / $good) * 100;

if($percentage => 100) {
 //5 starts
} else if ($percentage < 100 && $percentage => 80) {
 //4 stars
} else if ($percentage < 80 && $percentage => 60) {
 //3 stars
} else if ($pecentage < 60 && $percentage => 40) {
 //2 starts
} else {
 //1 star
}

那只是一个基本的例子。有多种方法可以解决此问题。您需要根据需要进行调整,然后尝试是否适合您。

我做得很快,所以没有测试。请检查并确定它是否适合您。我只是想给你一个主意。

答案 1 :(得分:0)

也许你想要这个:

 $rating = $good_reviews 
     ? intval ( 5.4 * $good_reviews / ( $good_reviews + $bad_reviews))
     : 0;

现在逐步:

  • SUM := $good_reviews + $bad_reviews是所有评论的总和。
  • RATE := $good_reviews / SUM是$ good_reviews对评论总数的总体评价。结果在0.000到1.000的范围内。
  • 将其乘以5.4会将范围扩展到0.000至5.400。允许一些不满意的选票获得5星排名有点棘手。该因子可以是5.000到5.9999999之间的每个数字。
  • intval()将数字从0减少到5(您的星星)。
  • ?:的替代方案避免了零误差除法。