たとえば、次のようなものがあるとします。以下の間にパフォーマンスの違い、使用方法の違いはありますか、それとも単なる個人的な好みですか?
for($i=0; $i<10; $i++){
echo $i;
}
と
$i = 0;
while($i < 10){
echo $i;
$i++;
}
たとえば、次のようなものがあるとします。以下の間にパフォーマンスの違い、使用方法の違いはありますか、それとも単なる個人的な好みですか?
for($i=0; $i<10; $i++){
echo $i;
}
と
$i = 0;
while($i < 10){
echo $i;
$i++;
}
いいえ。 for ループは while ループとして記述できます (逆も同様です)。同様に、各再帰関数はループとして記述でき(多くの作業が必要になる場合もありますが、実行できます)、その逆も可能です。
パフォーマンスについて: ベンチマークは行っていませんが、両方のループでまったく同じ変数が同時に宣言され、同じ命令が同時に実行され、同じ比較が同時に実行されます。ループが完了すると、同じ変数 (この$i
例では) が同じ値で存在します。パフォーマンスの違いがどこから来るのかわかりません。(C++ などの他の言語では、for ループの初期化部分で宣言された変数は、ループの後に存在しなくなることに注意してください。)
どのループを使用するかは、主に個人的な好みの問題です。反復回数がわかっている場合は、 for ループを使用するのが好きです(例のように、10回の反復)。サイズがわからないデータベースの結果セットを反復するときのように、何らかの条件 (プログラムを作成するときに予測できない) が満たされるまでループを継続する必要がある場合は、通常、while ループを使用します。
唯一の違いは、変数のスコープです (プログラミング言語によって異なります)。
たとえば、$i のスコープを for ループ内に限定したい場合、これを実現できます。
これは while ループと同じようにはできませんが、それ以外は同じです。
一方は、もう一方よりもわずかなパフォーマンス上の利点しか得られない場合がありますが、これはコンパイラに固有のものです。ただし、コードの優先順位が毎回優先されるほど小さいでしょう。