php forループ文の使用方法の詳細

3837 ワード

forループはわずかなコードであり、ループが追加されます.関連するサイクルの共通のタスクは、次のとおりです.
カウンタ変数の初期値を設定します.
条件文が正しいことを確認してください.
実行中のコードループ.
インクリメンタルは、各反復の終了時にループカウンタを通過する.
forループを使用すると、簡単なコード行を定義できます.変な形をしているようなので、文法に注意しなければなりません.
forループの構文は次のとおりです.
for (expr1; expr2; expr3)
statement
最初の式(expr 1)は、ループが開始される前に無条件に1回評価される.
expr 2は、サイクルが開始されるたびに値を求める.値がTRUEの場合、ループを続け、ネストされたループ文を実行します.値がFALSEの場合、ループは終了します.
expr 3は、サイクル毎に評価(実行)される.
各式は、空またはカンマで区切られた複数の式を含むことができます.式expr 2では、カンマで区切られた式はすべて計算されますが、最後の結果のみが取得されます.expr 2が空であることは、無限ループを継続することを意味する(Cと同様に、PHPはその値をTRUEとする).これは想像していたほど役に立たないかもしれません.なぜなら、forの式の真値で判断するのではなく、break文でループを終了することを望んでいるからです.
簡単な例1を見て
 
  
FOR ($i = 0; $i <= 2; $i++)
{
print "value is now " . $i . "
";
}

出力値
value is now 0
value is now 1
value is now 2
第1サイクルでは、$i=0であり、これは表現($i<=2)を意味し、tureである.したがって,印刷文の実行時に$iが1加算され,1となる.
第2サイクルでは,$=1,これは表現,($i<=2)を意味し,tureである.したがって,印刷文の実行時に$iが1加算され,2となる.
第3の反復では、$i=2であり、これは、表現($i<=2)がtureであることを意味する.したがって,印刷文実行時には$iがインクリメントされて1 3となる.
第4の反復では,$i=3であり,これは表現($i<=2)が偽物であることを意味する.したがって、PHPはループを実行せず、印刷文を実行しない.
インスタンス2
 
  
$brush_price = 5;

echo "";
echo "";
echo "";
for ( $counter = 10; $counter <= 100; $counter += 10) {
echo "";
}
echo "
QuantityPrice
";
echo $counter;
echo "
";
echo $brush_price * $counter;
echo "
";

出力値
Quantity Price
10 50
20 100
30 150
40 200
50 250
60 300
70 350
80 400
90 450
100 500
次の例を参照してください.1~10の数字が表示されます.
 
  
/* example 1 */

for ($i = 1; $i <= 10; $i++) {
echo $i;
}

/* example 2 */

for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}

/* example 3 */

$i = 1;
for (;;) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}

/* example 4 */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>

もちろん、最初の例は最も正常(または4番目)に見えますが、forサイクルで空の式を使用すると、多くの場合便利であることがわかります.
PHPは、コロンのforループの代替構文もサポートします.
 
  
for (expr1; expr2; expr3):
statement;
...
endfor;

次のような配列を巡回する必要があります.
 
  
/*
*
*/
$people = Array(
Array('name' => 'Kalle', 'salt' => 856412),
Array('name' => 'Pierre', 'salt' => 215863)
);

for($i = 0; $i < sizeof($people); ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>

上記のコードの問題は、forの2番目の式がコードの実行を遅くすることです.ループのたびに配列の長さを計算するためです.配列の長さは常に変わらないので,配列の長さを中間変数で格納し,この変数をforループの2番目の式として用いることができる.このようにループ時にこの変数の値を直接使用することができ、毎回再計算する必要はありません.次のようになります.
 
  
$people = Array(
Array('name' => 'Kalle', 'salt' => 856412),
Array('name' => 'Pierre', 'salt' => 215863)
);

for($i = 0, $size = sizeof($people); $i < $size; ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>