根据评论计算5星评级

问题描述 投票:-3回答:2

我的评论很好,而且评论很差。我需要从这篇评论中计算评分。

例:

  • Post 1有1条评论,还有2条不好的评论
  • Post 2有12条评论,还有5条评论不佳
  • Post 3有0条评论,还有0条评论

我如何计算评级?我需要获得5星。我需要得分不超过5星。我可能需要这个配方吗?

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

但我没有得到5或更少的数字。我怎么能正确地做到这一点?

php
2个回答
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(你的星星)。
  • ?:的替代方案避免了零误差的除法。

0
投票

那个公式不会给你你需要的东西。它只会与坏的相乘并除以5.例如((100 good * 20 bad)/ 5)= 400. 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
}

这只是一个基本的例子。有不同的方法来解决这个问题。您需要根据需要进行调整,并尝试它是否适合您。

我这么做很快,所以没有测试。请检查一下它是否适合你。我只想给你一个主意。

© www.soinside.com 2019 - 2024. All rights reserved.