首页 > 解决方案 > 即使未使用计数器,此循环如何工作?

问题描述

我正在探索一些怀旧的旧 php 文件,我注意到这是我之前为获取一些记录而写的:

     <?php
        for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )
        {
           print( "<tr>" );
           foreach ( $row as $key => $value )
           {
             if($key == '6')
             {
                if($value == '1'){print( "<td>12/9/15 6:00PM - 7:00PM</td>" );}
                if($value == '2'){print( "<td>12/9/15 7:00PM - 8:00PM</td>" );}
                if($value == '3'){print( "<td>12/9/15 8:00PM - 9:00PM</td>" );}
                if($value == '4'){print( "<td>12/10/15 6:00PM - 7:00PM</td>" );}
                if($value == '5'){print( "<td>12/10/15 7:00PM - 8:00PM</td>" );}
                if($value == '6'){print( "<td>12/10/15 8:00PM - 9:00PM</td>" );}
             }
             else
             {
                print( "<td>$value</td>" );
             }
           }
           print( "</tr>" );
        }
        mysqli_close( $database );
     ?>

我将其更改为while ($row = mysqli_fetch_row( $result )),它也可以正常工作,正如预期的那样。我只是想了解for循环方法在$counter不使用时如何工作的逻辑......

图片

我正在争先恐后地理解为什么我使用这种逻辑,以及当它甚至$counter不用于索引或任何东西时它是如何工作的。

标签: php

解决方案


了解其工作原理的最简单方法是剖析for循环。

for (<initialization>; <condition>; <update expresion>)

在您的情况下,您有一个最初设置并递增的计数器。

for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )

您没有使用计数器,但这实际上并不重要,因为唯一决定循环是否继续的是条件是否为true。由于最终mysqli_fetch_row停止返回结果,循环将终止。出于循环的目的,该$counter变量未使用并被忽略。

您还可以将 for 循环重写为:

for (;$row = mysqli_fetch_row( $result );)这也一样。但是,什么是while循环?它只是一个没有初始化和更新表达式的 for 循环。因此,您可以再次将其重写为:

while ($row = mysqli_fetch_row( $result ))

我希望这能解决问题。


推荐阅读