1

我对 PHP 还很陌生,为了更好地理解它,我正在构建一个小型应用程序,我可以在其中将电影添加到监视列表中,查看即将上映的电影,...

现在,我正在尝试建立一个评分最高的列表,按照评分从高到低的顺序列出用户添加的所有电影。

我现在的语法是:

<?php
          while($avr = mysql_fetch_array($rating)) {
            for ($i=1; $i<5; $i++){ ?>
            <li class="movie"><?php echo $i . ' - ' . $avr['title'] . '<div class="movie_rating">' . $avr['vote_avr'] . '</div>'; ?></li>
<?php } } ?>

“$i<5;” 在 for 循环中是硬编码的时刻进行测试,这将被一个变量替换。

我遇到的问题是每个“$avr['title']”的计数从 1 到 4。所以它在我的页面上打印每个电影标题 4 次。我只希望第一个电影标题是“1”,第二个是“2”,等等。

如果我将 for 循环放在 while 循环之外,则每部电影都是“1”。

所以我的问题是,如何将一个 for 循环集成到一个 while 循环中,该循环对每个 while 循环值只计数一次?

提前致谢。

4

3 回答 3

4

您不需要 for 循环。你只需要一个计数器变量(我在这里命名$i),每次进入 while 循环时递增:

$i = 0;
while($avr = mysql_fetch_array($rating)) {
?>
    <li class="movie"><?php echo ++$i . ' - ' . $avr['title'] . '<div class="movie_rating">' . $avr['vote_avr'] . '</div>'; ?></li>
<?php
    // Increment & Insert ---------^
}
于 2013-06-16T09:40:34.373 回答
1

您不需要 for 循环。

<?php
      $i=1;
      while($avr = mysql_fetch_array($rating)) {            
        <li class="movie"><?php echo $i . ' - ' . $avr['title'] . '<div    class="movie_rating">' . $avr['vote_avr'] . '</div>'; ?></li>
<?php  $i++;
  } ?>
于 2013-06-16T09:40:55.560 回答
1
<?php
$i = 1;
          while($avr = mysql_fetch_array($rating)) {
              if($i < 5) {
?>
              <li class="movie"><?php echo $i . ' - ' . $avr['title'] . '<div class="movie_rating">' . $avr['vote_avr'] . '</div>'; ?></li>
<?php          $i++; } } ?>

你也可以在你想要else clause的之后添加break the loopiterations

于 2013-06-16T09:45:37.030 回答