首页 > 解决方案 > 星级评分,半星支持

问题描述

我在渲染星级时遇到了问题,希望能对我的问题有更多的关注。我的正常评级对整数工作得很好,但我很难显示半星。例如,我创建了一个为我提供 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\">";
      }
    }
?>

理想情况下,我想在循环结束时添加一个条件并检查一半并回显“”;

标签: phphtmlsvg

解决方案


可能有一种更简单的方法来做到这一点,但这很有效,检查是否$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\">";
     }
}
?>

推荐阅读