次の while ループを PHP の for ループに変換するにはどうすればよいですか?
while( $row2 = pg_fetch_row( $result_tags )
while -ループは私にとってエラーの原因です。次のように while ループが表示されます。
for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )
次の while ループを PHP の for ループに変換するにはどうすればよいですか?
while( $row2 = pg_fetch_row( $result_tags )
while -ループは私にとってエラーの原因です。次のように 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