使用PHP创建5星产品评论

时间:2012-03-05 06:07:05

标签: php

我正在使用php和MySQL为一个网站制作一个5星产品评论,一切都很好,除了我的总星, 提交评论时,客户只能添加1到5颗星(第5号),然后我将每个评论的评分相加并除以评论数。现在问题是我需要获得1,1.5,2,2.5等等,有时候我会得到像3.66768748这样的东西。

如何对数字进行舍入,以便如果它超过.5它将是最小的.5它将是ceil,如果它是.5它保持不变,如果它小于.5它会落地吗?

我可以使用内置函数吗?

提前谢谢!

4 个答案:

答案 0 :(得分:1)

以下函数将舍入到最接近的位置 - 下一个最低整数,下一个最高整数,它们之间的中间点。

function half_star_round($input) {
    $frac = $input - floor($input);
    if($frac < 0.25) {
        return floor($input);
    } else if($frac >= 0.75) {
        return ceil($input);
    } else {
        return floor($input) + 0.5;
    }
}

答案 1 :(得分:1)

这很有效。将要舍入的值传递给第二个arg。在您的情况下 0.5

function roundTo($value, $roundTo = 1) {
    $rounded = round($value); // 4
    $roundToComparer = $roundTo / 2;

    if ($value < $rounded) { // rounded to ceiling
        if (($rounded - $roundToComparer) > $value) {
            $rounded = $rounded - $roundTo;
        }
    } else { // rounded to floor
        if (($rounded + $roundToComparer) < $value) {
            $rounded = $rounded + $roundTo;
        }
    }

    return $rounded;
}

$rating = 3.66768748;
echo roundTo($rating, 0.5); 

答案 2 :(得分:0)

  1. 获取评论总和
  2. 除以总评论
  3. 乘以两个
  4. 除以二

答案 3 :(得分:-1)

Php证明了圆形函数。

http://php.net/manual/en/function.round.php