我在渲染星级时遇到了问题,希望我能在我的问题上得到一些额外的关注。我的正常评级对于整数来说效果很好,但我很难显示半星。例如,我创建了一项为我提供 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 "";
可能有一种更简单的方法来做到这一点,但这很有效,检查是否$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)