我遇到了星级评定问题,希望我能对此问题多加关注。我的正常评级与整数相符,但我很难显示半星。例如,我创建了一项为我提供0-5评分的服务,因此我得到了2.5、3或5等一个值
在我创建一个开关盒并为每个变体创建一个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\">";
}
}
?>
理想情况下,我想在循环的末尾添加一个条件,并检查一半并回显“”;
答案 0 :(得分:1)
可能有一种更简单的方法,但这可行,检查$starRating
是否为浮点数,然后将其四舍五入并与$i
进行比较,以将半星放置在正确的位置。 / p>
<?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\">";
}
}
?>
答案 1 :(得分:0)
您可以验证 $ starRating 的值是否为整数,执行以下操作(仅考虑一半的值):
<?php
for ($i = 1; $i <= $totalRating; $i++) {
if ($starRating < $i ) {
echo "<img src=\"/icons/star-empty.svg\">";
} elseif(is_int($starRating) === false) {
echo "<img src=\"/icons/star_half.svg\">";
} else {
echo "<img src=\"/icons/star.svg\">";
}
}
?>
如果要以更精确的值显示星星,则可以使用名称中的浮点值创建图像,例如“ star-3.svg” (代表.3浮点值,并且做这样的事情:
<?php
for ($i = 1; $i <= $totalRating; $i++) {
if ($starRating < $i ) {
echo "<img src=\"/icons/star-empty.svg\">";
} elseif(is_int($starRating) === false) {
echo "<img src=\"/icons/star-" . floatval($starRating)) . ".svg\">";
} else {
echo "<img src=\"/icons/star.svg\">";
}
}
?>
但是在这种情况下,您需要注意只接收一个数字(2.2、3.4等)的浮点值。
希望对您有帮助...