2011-11-18 100 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