2011-11-18 139 views
1

我有一個表(評論),它存儲評分的值(1-5)。我將使用這些評分的總和作爲總分。PHP評分系統

我有5顆星在頁面上顯示或取決於整體價值。

我的總分是通過計算所有評分的總值除以表中的評論數量得出的。這給每個時間5以下的值...很好。

但是,我現在有一個問題,例如值可能是1.5或1.75。如果數值是1.5,我會顯示1個半星和3個半星關閉。我應該如何確定值是否爲1.75,以僅顯示1.5值星。

希望是有道理的。

+1

也許你可以發佈相關的代碼? –

+0

具有比例的評級系統(例如:1-5,1-10)對於確定評級並不是很好。每個人都有不同的標準,所有這些都會使事情複雜化,而不會增加太多(如果有的話)價值。以Youtube爲例,他們曾經擁有一個明星系統,現在它只是喜歡或不喜歡。請參閱:[UX:比率與喜歡/不喜歡](http://ux.stackexchange.com/questions/4200/rate-vs-like-dislike) – NullUserException

+0

不幸的是,客戶需要有星級評分系統。基本上我只想得到一個完整的數字或一個.5變量的結果。 – puks1978

回答

1

這應該是一個簡單的數學問題,因爲你的分辨率爲1/2,乘以二,圓,然後除以2:

round(x * 2)/2 

round((1.75) * 2)/2 = 2 
round((1.65) * 2)/2 = 1.5 
0
<?php 

$tests = array(-1, 0, 0.25, 0.5, 1, 1.5, 1.75, 3, 4.22, 6); 

foreach($tests as $test) 
    echo "Initial rate = ".$test.", adjusted rate = ".adjustRate($test)."\n"; 

function adjustRate($val) 
{ 
    if ($val < 0) 
    return 0; 

    if ($val > 5) 
    return 5; 

    return floor($val * 2)/2; 
} 

給出例如:

Initial rate = 1.75, adjusted rate = 1.5