如何将以下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++ )
答案 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
循环结束时递增它。