PHP评级系统

时间:2011-11-18 22:57:18

标签: php

我有一张表(评论),用于存储评级的值(1-5)。我将使用这些评级的总和作为总分。

我在页面上有5颗星,根据整体价值显示或关闭。

通过计算所有评分的总价值除以表格中的评论数量,我得到总分。每次都给出低于5的值......很棒。

但是我现在遇到的问题是,例如,值可能是1.5或1.75。如果值为1.5,我将显示1颗半星形,并且将显示3颗半星形。我该如何确定该值是否为1.75以仅显示1.5值星。

希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

那应该是一个简单的数学问题,因为你的分辨率是1/2,乘以2,然后除以2,然后除以2:

round(x * 2) / 2

round((1.75) * 2) / 2 = 2
round((1.65) * 2) / 2 = 1.5

答案 1 :(得分: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