PHPの基礎 - 繰り返し

提供: MochiuWiki : SUSE, EC, PCB

2021年2月25日 (木) 22:17時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == 繰り返し処理は、決まった回数や条件を満たしている間は同じ処理を繰り返し行う場合に使用する。<br> ここでは、<c…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

概要

繰り返し処理は、決まった回数や条件を満たしている間は同じ処理を繰り返し行う場合に使用する。
ここでは、for文、while文、foreach文の使用方法について記載する。


for文

for文の基礎

繰り返し処理では、条件式を評価して繰り返しを継続するかどうか判別する。
条件式には色々な条件を記述することができるが、決められた回数だけ繰り返すといった処理に使用される。

変数の値を変化させて条件式で評価する場合、for文を使用すると簡潔に記述することができる。
for文に書式は、以下の通りである。

 for(初期化式; 条件式; 変化式)
 {
    実行する処理1;
    実行する処理2;
 }


for文では初期化式、条件式、変化式の3つを記述する。

  • 初期化式
    for文の処理が開始される時に1度だけ実行されて、通常は条件式の中で使用される変数等の初期化を行う式を記述する。
  • 条件式
    while文と同様、繰り返しを継続するかどうかの判定に使用する。
    条件式の評価が真ならばブロック内の処理を実行する。偽ならばfor文を終了する。
  • 変化式
    一般的に、条件式の中で使用される変数等を、繰り返しが1回行われるごとに変化させるための式を記述する。


 for($count = 0; $count < 10; $count++)
 {
    // 実行する処理
 }


実行する処理が1つのみの場合、ブロックを省略して記述してもよい。

 for(初期化式; 条件式; 変化式)
    実行する処理;


なお、while文と同様、breakcontinueを使用することが可能である。

for文で複数の変数を変化させる

for文は、複数の式を記述することができる。 この場合、カンマで区切って必要な分の式を記述する。

 for(初期化式1, 初期化式2, ..; 条件式; 変化式1, 変化式2, ..)
 {
    実行する処理1;
    実行する処理2;
 }


以下の例では、for文において、2つの変数の初期化式と変化式を記述している。
初期化式として変数xに0、変数yに10を代入している。
そして、繰り返しが1回実行されるごとに、変数xの値を1加算、変数yの値を1減算している。

 for($x = 0, $y = 10; $x < 10; $x++, $y--)
 {
    print 'x='.$x.',y='.$y;
 }



foreach文

foreach文の基礎

foreach文は、配列に含まれる各要素の値を順に取り出す場合に使用する。

書式は、以下の通りである。
要素を取り出す配列と、取り出した要素の値を格納する変数を指定する。
foreach文では、配列に含まれる要素の数だけ繰り返しが実行されて、1回繰り返しを行うごとに配列に含まれる要素の値を変数に代入する。

 foreach(配列変数 as 変数)
 {
    実行する処理1;
    実行する処理2;
 }


以下の例では、配列の要素の値を順に取り出して表示している。

 $preflist = array('東京', '大阪', '名古屋');
 
 foreach($preflist as $pref)
 {
    print $pref;
 }


for文やwhile文とは異なり、繰り返しの終了を示す条件式は存在しない。配列の要素数分を繰り返して終了する。
なお、for文やwhile文と同様、breakcontinueを使用することが可能である。

※注意
配列の要素そのものを取り出しているわけではなく、要素の値を変数にコピーして代入しているだけである。
foreach文を使用して、配列の要素の値を変更する場合は、次のセクション"foreach文で配列要素の値を変更する"を参照すること。

foreach文でキーと値を取り出す

foreach文では、要素の値の他に、キーを取り出す構文も存在する。
繰り返しが1回行われるごとに、配列に含まれる要素の値を値変数に代入すると同時に、キーの値をキー変数に代入する。

書式は、以下の通りである。

 foreach(配列変数 as キー変数 => 値変数)
 {
    実行する処理1;
    実行する処理2;
 }


以下の例では、繰り返しごとに配列の要素のキーと値を取り出して表示している。

 $preflist = array('Tokyo' => '東京', 'Osaka' => '大阪');
 
 foreach($preflist as $key => $value)
 {
    print $key.'=>'.$value;
 }


foreach文で配列要素の値を変更する

foreach文で要素の値を変数に格納すると、値のコピーが変数に代入される。
そのため、要素の値を使用することはできるが、要素の値を変更することはできない。

値とキーを取得して、配列変数に対して要素の値を変更することも可能であるが、以下の書式を使用することもできる。

 foreach(配列変数 as &変数)
 {
    実行する処理1;
    実行する処理2;
 }


変数の前に&を付加することで、要素の値に対する参照を設定することができる。
したがって、変数に対して新しい値を代入することにより、要素の値を変更することが可能になる。

以下の例では、要素の値に対する参照を取得して、各要素の値を1.05倍して再度格納している。

最後にunset関数を呼び出しているのは、foreach文が終了しても変数valueには配列の最後の要素に対する参照が設定されたままであるため、
その後の処理で、誤って要素の値を変更できないように変数の割り当てを明示的に解除している。

 $pricelist = array(80, 100, 120);
 
 foreach($pricelist as &$value)
 {
    $value *= 1.05;
 }
 
 unset($value);