将PHP的while循环转换为for -loop

时间:2009-08-15 20:26:12

标签: php for-loop while-loop

如何将以下while循环转换为PHP中的for -loop?

while( $row2 = pg_fetch_row( $result_tags )

虽然-loops是我的错误来源。 我看到while -loop如下。

for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )

3 个答案:

答案 0 :(得分:9)

您无法将while转换为for

for个循环用于增量循环。 while循环用于执行代码,直到条件为false。虽然大多数for循环可以很容易地转换为while循环(for循环只是while循环的语法增强,但反之并非总是可行。

考虑以下循环:

while($row = pg_fetch_row($result)) { }

此循环将执行,直到pg_fetch_row()返回falsy value

  

注意:这种循环的正确语法是:

     

    while(($row = pg_fetch_row($result)) !== FALSE) { }

不幸的是,您最接近使用for循环的方法如下:

for(; $row = pg_fetch_row($result) ;) {}

无论如何,它的行为与while循环完全相同。

  

注意:同样,这种循环的正确语法是:

     

    for(; ($row = pg_fetch_row($result)) !== FALSE ;) { }

我认为您应该返回代码并找到问题的原因,而不是指责使用while循环。

pg_fetch_row()会返回一列列,因此您无法在其上使用count()

使用for循环的最接近的人将使用pg_num_rows

for($i = 0; $i < pg_num_rows($result); $i++) {
    $row = pg_fetch_row($result);
}

但就我个人而言,我发现不必要的冗长和对更多问题持开放态度。

答案 1 :(得分:5)

走向另一个方向,一个for循环:

for (init; test; incr) {body;}

相当于:

init;
while (test) {
    body;
    incr;
}

也就是说,for循环是一种特殊的while循环。就个人而言,我没有看到如何转换你给for循环的while循环将减少错误。

答案 2 :(得分:1)

你为什么要这样做?更好的方法是声明/实例化$i = 0,然后在while循环结束时递增它。