我不知道为什么我的 If 语句不起作用 (Laravel)

I Don't Know Why My If Statement Didn't Work (Laravel)

我的 if 语句有问题,我尝试根据平均评分显示星级,例如,如果平均评分为 4.8,则应显示警告星 4,但我尝试使语句只读第一条语句,以下是我的条件代码:

@if($reviews->average('rating') >= '3')
@for($i=1;$i<4;$i++)
    @php echo $i ? "<i class='mdi mdi-star me-n1 text-warning'></i>" : "<i class='mdi mdi-star me-n1 text-light'></i>"; @endphp
@endfor
@elseif($reviews->average('rating') >= '4')
@for($i=1;$i<5;$i++)
    @php echo $i ? "<i class='mdi mdi-star me-n1 text-warning'></i>" : "<i class='mdi mdi-star me-n1 text-light'></i>"; @endphp
@endfor
@endif

请帮助我为什么我的第二个陈述没有被阅读,在这种情况下,第二个陈述应该被阅读。谁能帮忙不胜感激

如评论中所述,问题出在 else if 逻辑上。如果将计算器调整为 <= 而不是 <,则可以直接在 for 循环中使用评论平均值。这使得 if 语句有些过时。

@for($i=1;$i <= $reviews->average('rating');$i++)
    @php echo $i ? "<i class='mdi mdi-star me-n1 text-warning'></i>" : "<i  class='mdi mdi-star me-n1 text-light'></i>"; @endphp
@endfor

如果平均值是例如 4.5,则循环将执行 4 次。如果是 3,则执行 3 次。在 3.5 的情况下,它也执行 3 次。 您可能需要为部分星号或四舍五入的数字添加功能。否则显示的星级和实际评级可能相差太大。例如,平均3.9会显示为3,但显示4星会更直观。