星级评定,半星支持

Gal*_*ger 2 html php svg

我在渲染星级时遇到了问题,希望我能在我的问题上得到一些额外的关注。我的正常评级对于整数来说效果很好,但我很难显示半星。例如,我创建了一项为我提供 0-5 级评分的服务,因此我得到的值类似于 2.5、3 或 5 等...

在我创建一个 switch case 并为每个变体创建一个 svg 之前,我希望能得到一些提示。以下是我目前所拥有的,任何提示将不胜感激。

<?php
     for ($i = 1; $i <= $totalRating; $i++) {
     if($starRating < $i ) {
        echo "<img src=\"/icons/star-empty.svg\">";
      }
      else {
        echo "<img src=\"/icons/star.svg\">";
      }
    }
?>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想在循环末尾添加一个条件并检查 half 并 echo "";

Sec*_*one 5

可能有一种更简单的方法来做到这一点,但这很有效,检查是否$starRating是浮点数,然后将其四舍五入并检查以将$i半星放置在正确的位置。

<?php
$totalRating = 5;
$starRating = 2.5;

for ($i = 1; $i <= $totalRating; $i++) {
     if($starRating < $i ) {
        if(is_float($starRating) && (round($starRating) == $i)){
            echo "<img src=\"/icons/star-half.svg\">";
        }else{
            echo "<img src=\"/icons/star-empty.svg\">";
        }
     }else {
        echo "<img src=\"/icons/star.svg\">";
     }
}
?>
Run Code Online (Sandbox Code Playgroud)