评级系统|显示单个变量的评级

时间:2012-04-12 20:43:05

标签: php rating

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

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

因为有人在问我尝试过什么,所以我没有尝试任何东西,因为我不知道从哪里开始。

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

<?php

$ratings = 3;

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

?>

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

2 个答案:

答案 0 :(得分: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'/>";
}

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

答案 1 :(得分: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
    }
}