phpでは
foreachとwhileループはどちらもループしますが、foreachとwhileループの違いは何でしょうか?foreachとwhileループの違いとパフォーマンスの比較を紹介します。
while ループでは、Perl は入力行を読み取り、それを変数に格納し、ループ本体を実行します。次に、他の入力行を探しに戻ります。
foreach ループでは、入力 operator の行全体がリストのコンテキストで実行されます (foreach はリストの内容を 1 行ずつ処理する必要があるため)。ループは実行を開始する前に、すべての入力を読み取る必要があります。
大容量のファイルを入力する場合、foreachを使用すると多くのメモリを占有します。両者の違いは非常に明らかです。したがって、最善のアプローチは、通常、while ループの省略表現を使用して、一度に 1 行ずつ処理させることです。
特定のステートメントまたは段落を繰り返し実行する場合、C# には現在のタスクに応じて使用できる 4 つの異なるループ ステートメント オプションが用意されています。ステートメント
について。 foreach ステートメント
。 while ステートメント
。 do ステートメント
) を繰り返し実行できます: for (初期化; 条件; ループ) 内部ステートメント
初期化、条件、ループはすべて選択可能であることに注意してください。条件を省略すると、終了するためにジャンプ ステートメント (break または goto) を必要とする無限ループが作成される可能性があります。
for (;;) { break; // 由于某些原因 }
もう 1 つの重要な点は、複数のカンマ区切りステートメントを
for ループの 3 つのパラメーターすべてに同時に追加できることです。たとえば、2 つの変数を初期化し、3 つの条件を指定し、4 つの変数を繰り返すことができます。 2.foreach
Visual Basic 言語に長い間存在していた機能は、For Each ステートメントを使用した列挙のコレクションです。 C# には、foreach ステートメントを通じて列挙を収集するためのコマンドもあります。
foreach (式内の型識別子) 含まれるステートメント
ループ変数は型と識別子によって宣言され、式はコレクションに対応します。ループ変数は、ループが実行されているコレクション要素を表します。
3.while
インクルードされたステートメントを 0 回以上実行したい場合、while ステートメントはまさにあなたが探しているものです:
while (条件) インクルードされたステートメント
条件ステートメント - これはブール式でもあります- 含まれるステートメントが実行される回数を制御します。 Break ステートメントと continue ステートメントを使用すると、while ステートメント内のステートメントの実行を制御できます。これは、for ステートメントとまったく同じように動作します。
4, do
C# で使用できる最後のループ ステートメントは do ステートメントです。最初のループの後にのみ条件が検証されるという点で、while ステートメントと非常によく似ています。
do { 内含语句 } while (条件);
do ステートメントは、含まれているステートメントが少なくとも 1 回実行されていることを保証し、条件が true と評価される限り実行され続けることを保証します。 Break ステートメントを使用すると、実行を強制的に do ブロックから抜け出すことができます。このループをスキップしたい場合は、 continue ステートメントを使用します。
パフォーマンスの比較
foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します (foreach が最初であるため)。は配列がコピーされ、while は内部ポインタを直接移動します) を実行しますが、結果はまったく逆になります。
ループ内では配列の「読み取り」操作が実行されるため、foreach は while より高速です:foreach ($array as $value) { echo $value; } while (list($key) = each($array)) { echo $array[$key]; }
foreach ($array as $key => $value) { echo $array[$key] = $value . '...'; } while (list($key) = each($array)) { $array[$key] = $array[$key] . '...'; }
テストしてみましょうfirst 50,000 個の添え字を持つ
1 次元配列3 つのテスト結果を平均する:
それぞれ for、while、および foreach に相当する 0.1311650
0.1666853
0.12374 40
テストを繰り返した結果、同じ配列を走査する場合、foreach が最も速く、while が最も遅いことがわかりました。 foreach は while よりも約 20% ~ 30% 高速です。次に、配列の添え字を 500000 と 5000000 に追加しますが、テスト結果は同じです。しかし、原理的な観点から見ると、foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します。一般的に、while は foreach よりも高速であると考えられています。 foreach は最初に配列がコピーされ、while は内部ポインタを直接移動します) を実行しますが、結果はまったく逆になります。その理由は、foreach が PHP の内部実装であるのに対し、while は一般的なループ構造であるためです。
以上がforeach ループと while ループの違いとパフォーマンスの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。