2 回答
TA贡献1830条经验 获得超3个赞
也许您想要这样:
$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(您的星星)。替代方法
?:
避免了零误差除法。
TA贡献1906条经验 获得超3个赞
该公式无法满足您的需求。它只会乘以乘以乘以乘以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
}
那只是一个基本的例子。有多种方法可以解决此问题。您需要根据需要进行调整,然后尝试是否适合您。
我确实很快完成了此操作,因此没有对其进行测试。请检查并确定它是否适合您。我只是想给你一个主意。
- 2 回答
- 0 关注
- 391 浏览
添加回答
举报