次の 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