Léo*_* 준영 1 php for-loop while-loop
如何将以下while循环转换为PHP中的for -loop?
while( $row2 = pg_fetch_row( $result_tags )
Run Code Online (Sandbox Code Playgroud)
虽然-loops是我的错误来源.我看到while -loop如下.
for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )
Run Code Online (Sandbox Code Playgroud)
你无法将其转换while为for.
for循环用于增量循环.while循环用于执行代码,直到条件为止false.虽然大多数for循环可以很容易地转换为while循环(for循环只是循环的语法增强while),但相反的情况并不总是可行的.
考虑以下循环:
while($row = pg_fetch_row($result)) { }
Run Code Online (Sandbox Code Playgroud)
此循环将执行,直到pg_fetch_row()返回一个假值.
注意:这种循环的正确语法是:
while(($row = pg_fetch_row($result)) !== FALSE) { }
不幸的是,您最接近使用for循环的方法如下:
for(; $row = pg_fetch_row($result) ;) {}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
但就我个人而言,我发现不必要的冗长和对更多问题持开放态度.
走向另一个方向,一个for循环:
for (init; test; incr) {body;}
Run Code Online (Sandbox Code Playgroud)
相当于:
init;
while (test) {
body;
incr;
}
Run Code Online (Sandbox Code Playgroud)
也就是说,for循环是一种特殊的while循环.就个人而言,我没有看到如何转换你给for循环的while循环将减少错误.