知道评分后,如何在CSS中显示星级?

时间:2018-08-27 01:54:55

标签: php html css

我正在一个网站上,在该网站中,当进行已知评级时会显示星级。以下是具有所有必要信息的JSON对象:

"item_ratings": [{
    "rating_id": 26,
    "item_id": 333,
    "booking_id": 60,
    "owner_id": null,
    "renter_id": 38,
    "rating": 5,
    "rating_type": "item",
    "created_at": "2018-07-04 10:28:55",
    "updated_at": "2018-07-04 10:28:55",
}, {
    "rating_id": 15,
    "item_id": 333,
    "booking_id": null,
    "owner_id": null,
    "renter_id": 38,
    "rating": 4,
    "rating_type": "item",
    "created_at": "2018-01-17 10:16:58",
    "updated_at": "2018-01-17 10:16:58",
}]

我在php中用来拉等级的代码是:

for ($i = 0; $i < count($data['item']->item_details->item_ratings); $i++) 
{
echo '<p class="renter_review_ratings">'.strtolower($data['item']->item_details->item_ratings[$i]->rating).'</p>';
}


问题陈述:

我想知道我需要在上面的php代码中进行哪些更改,以便当它为4时,它应该显示4星,当它为3时,它应该显示3星,反之亦然。

2 个答案:

答案 0 :(得分:3)

鉴于您使用FontAwesome 5,并且您的评分不超过5星,因此以下代码应该可以使用。

for ($j = 0; $j < count($data['item']->item_details->item_ratings); $j++) {
  $rating = $data['item']->item_details->item_ratings[$j]->rating;
  for($i = 1;$i <= 5;$i++) {
    if ($rating >= $i) {
      echo "<i class='fas fa-star'></i>";
    } else {
      echo "<i class='far fa-star'></i>";
    }
  }
}

这里发生的是,我们有第一个for循环,它获取所有评分。然后,它还有另一个嵌套的for循环,该循环恰好循环5次。每次查看时,它都会使用if语句使用FontAwesome库来确定显示全星还是空星。

答案 1 :(得分:1)

根据您的json,您可以这样做:-

for ($i = 0; $i < count($data['item']->item_details->item_ratings); $i++) 
{
    for($j = 0; $j < 5; $j++)
    {
        if($j <= $data['item']->item_details->item_ratings[$i]->rating) {
            // Star code
        } else {
            // No star code
        }
    }
}