私は Do While を使用する利点を探しています。ほとんどのブログやチュートリアルでは、要件に依存すると述べていますが、それがなければ Do While から得られる利点はありませんか?
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
私は Do While を使用する利点を探しています。ほとんどのブログやチュートリアルでは、要件に依存すると述べていますが、それがなければ Do While から得られる利点はありませんか?
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
それは面白い。今日は do while ループが必要な日でした。こんな感じでした。数値を生成したかったのですが、テストに合格する必要がありました。
while ループを使用すると、次のようになります。
$num = generateRandomNumber();
while (!numberMeetsRequirements($num)) {
$num = generateRandomNumber();
}
ご覧のとおり、ループの内側と外側に 1 回、1 つの行が繰り返されます。この特定の例では、do-while ループを使用してこれを回避できます。
do {
$num = generateRandomNumber();
} while (!numberMeetsRequirements($num));
しかし、他の人がすでに言ったように、それは本当にあなたが何をしているかに依存します. 上記のコードは単なる例です。
利点はありません。while
は事前条件付きループであり、do..while
事後条件付きループです。つまりwhile
、繰り返しの前に条件がチェックされ、繰り返しのdo..while
後に条件がチェックされます。
したがって、do..while
ループ内の本体は少なくとも 1 回実行されます。そのため、繰り返しがゼロの可能性がある何か (たとえば、データベースからの選択の行数) を反復している場合は使用できません。
構造化プログラムの定理により、どのプログラムも と のみで記述できることif
に注意してくださいwhile
。したがって、一般的には、do..while
ステートメントの必要はありません。いつでも に置き換えることができますwhile
。
条件は最初の実行後にのみチェックされるため、Do While は常に 1 回実行されます。
While Do は、最初にチェックされるため、条件が一致する場合にのみ実行されます
主なことは、ループ内のステートメントが少なくとも 1 回実行されることです。他のほとんどの構成では実行されることはありません。
do { >>command<< } while ()
<-- コマンドは少なくとも 1 回実行されます
while () { >>command<< }
<-- コマンドは while 条件が true の場合にのみ実行されます
for
、while
およびdo-while
ループを交換可能に使用して、任意のアルゴリズムを実装できます。ただし、ロジックの流れに従うと、一方のループを他方のループよりも優先して使用する方向に進む可能性があります。
do-while ループを使用する方が (ロジックの流れに基づいて) より適切な場合の代表的な例は、バブル ソートの実装です。アルゴリズムの説明はここにあります。つまり、配列を少なくとも 1 回反復処理する必要があることがわかります (バブル ソートの最適なケースは ですO(n)
。ここn
で、 は配列の長さです)。実装は次のとおりです。
$arr = array( 10, 5, 6, 1, 3, 2, 7, 8, 9, 4 );
$arr_len = 10;
$swapped;
do {
$swapped = false;
for ( $i = 0; i < ( $arr_len - 1 ); $i++ ) {
if ( $arr[ i ] > $arr[ i + 1 ] ) {
$temp = $arr[ i ];
$arr[ i ] = $arr[ i + 1];
$arr[ i + 1 ] = $temp;
$swapped = true;
}
}
} while ( $swapped == true );
私の PHP は非常にさびています。構文エラーがある場合はお知らせください。