PHP for循环内部循环

时间:2013-06-16 09:38:24

标签: php for-loop while-loop

我对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”。

所以我的问题是,如何在while循环中集成for-loop,每个while循环值只计算一次?

提前致谢。

3 个答案:

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

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

答案 2 :(得分: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 loop添加到iterations