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 關注
- 427 瀏覽
添加回答
舉報