ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルの foreach ループと while ループの違いの比較
Foreach と while ループはどちらも PHP でループします。では、foreach と while ループの違いは何ですか? どちらの方がパフォーマンスが優れていますか? ここで、知る必要がある人のために、foreach と while ループの違いとパフォーマンスの比較を紹介します。参照可能です。
while ループでは、Perl は入力行を読み取り、それを変数に格納し、ループの本体を実行します。次に、他の入力行を探しに戻ります。
foreach ループでは、入力演算子の行全体がリスト コンテキストで実行されます (foreach はリストの内容を 1 行ずつ処理する必要があるため)。ループは実行を開始する前に、すべての入力を読み取る必要があります。
大容量のファイルを入力する場合、foreachを使用すると多くのメモリを占有します。両者の違いは非常に明らかです。したがって、最善のアプローチは、通常、while ループの省略表現を使用して、一度に 1 行ずつ処理させることです。
ここにいくつかの情報があります:
特定のステートメントまたは段落を繰り返し実行する場合、C# には現在のタスクに応じて使用できる 4 つの異なるループ ステートメント オプションが用意されています。
。ステートメント
。 foreach ステートメント
。 while ステートメント
。 do ステートメント
for ステートメントは、含まれるステートメントを何回実行する必要があるかが事前にわかっている場合に特に便利です。通常の構文では、条件が true の間、内部ステートメント (およびループ式) を繰り返し実行できます。
for (初期化; 条件; ループ) にはステートメントが含まれます
初期化、条件、ループはすべてオプションであることに注意してください。条件を省略すると、終了するためにジャンプ ステートメント (break または goto) を必要とする無限ループが作成される可能性があります。
コードをコピー | |
{
休憩; // 何らかの理由で |
2.foreach
Visual Basic 言語に長い間組み込まれている機能は、For Each ステートメントを使用して列挙を収集する機能です。 C# には、foreach ステートメントを通じて列挙を収集するコマンドもあります。
foreach (式内の型識別子) を含むステートメント
ループ変数は型と識別子によって宣言され、式はコレクションに対応します。ループ変数は、ループが実行されているコレクション要素を表します。
3.ながら
囲まれたステートメントを 0 回以上実行したい場合、while ステートメントがまさにあなたが探しているものです:
while (条件) にはステートメントが含まれています
条件ステートメント (これもブール式) は、含まれているステートメントが実行される回数を制御します。 Break ステートメントと continue ステートメントを使用すると、while ステートメント内のステートメントの実行を制御できます。これは、for ステートメントとまったく同じように動作します。
4、してください
C# で使用できる最後のループ ステートメントは do ステートメントです。最初のループの後にのみ条件が検証されるという点で、while ステートメントと非常によく似ています。
コードをコピー | |||||||||||||
{
文章が含まれています |
コードをコピー | |
$値をエコーする } while (list($key) = each($array)) { エコー $array[$key] } |
コードをコピー | |
;
} while (list($key) = each($array)) { $array[$key] = $array[$key] .'; } |
テストプラットフォーム:
CPU:P-M725
ハードドライブ: 40G 5400 rpm
OS: Windows XP SP2
WEB: apache 2.0.54 php5.0.4
テストコード:
コードは次のとおりです
* @ 作者: リロフ
* @ ホームページ: www.bKjia.c0m
}
return ((float)$usec+(float)$sec);
echo '使用時間:'.round($time_used, 7).'(s)
$time_start = GetRunTime();
echo 'その間の使用時間:'.round($time_used, 7).'(s) ##################################### $time_start = GetRunTime();
';
#####################################
テスト結果: 3 つのテスト結果を平均します: テストを繰り返した結果、同じ配列を走査する場合、foreach が最も速く、while が最も遅いことがわかりました。 foreach は while よりも約 20% ~ 30% 高速です。次に、配列の添え字を 500000 と 5000000 に追加しますが、テスト結果は同じです。しかし、原理的な観点から見ると、foreach は (配列をコピーすることによって) 配列のコピーを操作しますが、while は配列の内部インデックスを移動することによって操作します。一般的に、while は foreach よりも高速であると考えられています。 foreach は最初に配列がコピーされ、while は内部ポインタを直接移動します) を実行しますが、結果はまったく逆になります。その理由は、foreach が PHP の内部実装であるのに対し、while は一般的なループ構造であるためです。
|