Php 当评级已知时,如何在css中显示星级评级?

Php 当评级已知时,如何在css中显示星级评级?,php,html,css,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 1

我在一个网站上工作,在该网站上显示明星评级时,在已知的评级。下面是包含所有必要信息的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>';
}
for($i=0;$iitem\u details->item\u ratings);$i++)
{
echo'

'.strtolower($data['item']->item_details->item_ratings[$i]->rating)。'

'; }

问题陈述:


我想知道我需要在上面的php代码中做什么更改,以便当它是4时,它应该显示4颗星,当它是3时,它应该显示3颗星,反之亦然。

根据您的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
        }
    }
}
for($i=0;$iitem\u details->item\u ratings);$i++)
{
对于($j=0;$j<5;$j++)
{
if($j项目详细信息->项目评分[$i]->评分){
//星号
}否则{
//无星码
}
}
}

根据您的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
        }
    }
}
for($i=0;$iitem\u details->item\u ratings);$i++)
{
对于($j=0;$j<5;$j++)
{
if($j项目详细信息->项目评分[$i]->评分){
//星号
}否则{
//无星码
}
}
}
考虑到您使用的是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($j=0;$jitem_details->item_ratings);$j++){
$rating=$data['item']->item_详细信息->item_评级[$j]->评级;
对于($i=1;$i=$i){
回声“;
}否则{
回声“;
}
}
}
这里发生的是,我们有第一个获得所有评级的
for
循环。然后它有另一个嵌套的
for
循环,该循环正好循环了5次。每次查看时,它都使用
if
语句来确定使用FontAwesome库是显示满星还是空星。

鉴于您使用的是满星,并且您的评级为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($j=0;$jitem_details->item_ratings);$j++){
$rating=$data['item']->item_详细信息->item_评级[$j]->评级;
对于($i=1;$i=$i){
回声“;
}否则{
回声“;
}
}
}

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

我应该在//star code注释中提到什么?您可以使用
FontAwesome
图标或图像我应该在//star code注释中提到什么?您可以使用
FontAwesome
图标或者图像当前的php代码有许多我没有显示的echo语句。应该能够用我的代码替换当前的php代码,其结果应该是相同的,但是,它将使用字体而不是纯文本。但是,您的网站上必须有FontAwesome库。转到FontAwesome的网站(在答案中链接),并使用他们的CDN开始查看它的工作情况。只需在
$rating
变量声明之后和循环之前添加您的回音。主回音语句位于最后第三行。很抱歉,我给您发错了小提琴。这里是正确的小提琴当前的php代码有许多回声语句,我没有显示。应该能够取代你的当前php代码与我的,其结果应该是相同的,但它将使用字体而不是纯文本。但是,您的网站上必须有FontAwesome库。转到FontAwesome的网站(在答案中链接),并使用他们的CDN开始查看它的工作情况。只需在
$rating
变量声明之后和循环之前添加您的回音。主回音语句位于最后第三行。很抱歉,我给您发错了小提琴。这是正确的小提琴