-2

所以,我的问题非常紧迫,我有一个变量,例如 4,我需要将它转换为某种评级,非常简单(从 1 到 5),没有半星或任何东西。

我需要显示一个从 1 到 5 的数字的评分,所以如果我有 1 我将获得一颗星,如果我有 5 我将获得五颗星。我可以做一个 for 循环并显示图像,但我还需要显示空(未评级)星。我不需要任何功能,因此您无法实际评分,只需显示评分即可。

所以因为有人问我试过什么,我什么都没试过,因为我不知道从哪里开始。

我可以这样做以根据我拥有的变量(这是一个从 1 -> 5 的数字)显示一些星星:

<?php

$ratings = 3;

for( $i = 1; $i <= $ratings; $i++)
echo '<img src="some_image.png" />';

?>

就是这样,但是对于未评级的开始,我该怎么办,如何将其余的空星显示到五?

4

2 回答 2

3

你可以像这样做一个嵌套的for循环:

$tranStars;

for($i=0;$i<5;$i++){
  if($i==0){
    for($j=0;$j<$rating;$j++){
      echo "<img src='yourFullStars.png'/>";
      $tranStars=$j;
    }
    $i=$tranStars;
  }
  echo "<img src='yourEmptyStars.png'/>";
}

或者你可以做两个单独的 for 循环:

for($i=0;$i<$rating;$i++){
  echo "<img src='yourFullStars.png'/>";
}
for($i=0;$i<5-$rating;$i++){
  echo "<img src='yourEmptyStars.png'/>";
}

......或任何数量的东西,真的。

于 2012-04-12T21:10:16.667 回答
2

您已经显示了 3 个已填充的星,因此您所要做的就是显示其余未填充的。如果你有:

$ratings = 3;                               // 3 filled stars
for ($i = 1; $i <= $ratings; $i++) {        // go through each star
    echo '<img src="filled.png" />';        // show it filled
}

那么您需要确定是否还有剩余:

$starsLeft = 5 - $ratings;                  // 2 stars left

如果是这样,则将其余部分显示为空星:

if ($starsLeft > 0) {                       // if there are any more stars left
    for ($i = 1; $i <= $starsLeft; $i++) {  // go through each remaining star
        echo '<img src="empty.png" />';     // show it empty
    }
}
于 2012-04-12T21:17:13.040 回答