1

次の while ループを PHP の for ループに変換するにはどうすればよいですか?

while( $row2 = pg_fetch_row( $result_tags )

while -ループは私にとってエラーの原因です。次のように while ループが表示されます。

for ( $i = 0 ; $i < count(pg_fetch_row( $result_tags )) ; $i++ )
4

3 に答える 3

9

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);
}

しかし、個人的には、それは不必要に冗長であり、より多くの問題を引き起こしやすいと感じています。

于 2009-08-15T20:34:12.290 に答える
5

反対方向に進むと、for ループになります。

for (init; test; incr) {body;}

次と同等です。

init;
while (test) {
    body;
    incr;
}

つまり、for ループは特別な種類の while ループです。個人的には、指定した while ループを for ループに変換するとエラーがどのように減少するかわかりません。

于 2009-08-15T20:32:17.177 に答える
1

なぜこれをしたいのですか?より良い方法は、宣言/インスタンス化してから、ループ$i = 0の最後でそれをインクリメントすることです。while

于 2009-08-15T20:31:47.850 に答える