如何在 PHP 中将以下 while 循环转换为 for 循环?
while( $row2 = pg_fetch_row( $result_tags )
While -loops 对我来说是错误的来源。我看到 while 循环如下。
for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )
如何在 PHP 中将以下 while 循环转换为 for 循环?
while( $row2 = pg_fetch_row( $result_tags )
While -loops 对我来说是错误的来源。我看到 while 循环如下。
for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )
您不能将其转换while
为for
.
for
循环用于增量循环。while
循环用于执行代码,直到条件为false
. 虽然大多数for
循环可以很容易地转换为while
循环(for
循环只是循环的句法增强while
),但并非总是可能发生相反的情况。
考虑以下循环:
while($row = pg_fetch_row($result)) { }
这个循环将一直执行,直到pg_fetch_row()
返回一个假值。
注意:这种循环的正确语法是:
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);
}
但就我个人而言,我发现这不必要地冗长并且容易引发更多问题。
在另一个方向,一个 for 循环:
for (init; test; incr) {body;}
相当于:
init;
while (test) {
body;
incr;
}
也就是说,for 循环是一种特殊的 while 循环。就个人而言,我看不出将您提供的 while 循环转换为 for 循环将如何减少错误。
你为什么要这样做?更好的方法是声明/实例化,然后在循环$i = 0
结束时增加它。while