feeds2011/08/31カテゴリー:PHPPHPの制御構文TweetPHPのプログラムの実行は、基本的に上から下へ順次実行されますが、必要に応じて条件分岐処理や反復処理といった様々な制御構造を使用することができます。else文は、条件として与えられた式を論理値として評価し、その結果によって処理を分岐します。下記の例では、式1がtrueであれば、文1を実行して処理を終了します。式1がfalseで式2がtrueであれば、文2を実行して処理を終了します。式1と式2がどちらもfalseであれば、文3を実行して処理を終了します。elseifとelseは、必要なければ省略可能です。elseifは必要に応じて、いくつでも記述できます。文3}?&gt;PHPのif文は、コロン":"と"endif;"を用いて、下記のように記述することもできます。if文の途中でPHPブロックを抜ける場合などは、このように記述した方がわかりやすい場合があるので、適宜使い分けると良いでしょう。?&gt;&lt;p&gt;$fooは、$hogeより小さいです。?&gt;&lt;p&gt;$fooは、$hogeより大きいです。?&gt;&lt;p&gt;$fooと$hogeは、同じです。?&gt;whilewhile文は、条件として与えられた式を論理値として評価し、その結果がtrueの間、処理を反復します。下記の例では、まず式1を評価した結果がtrueであれば、文1を実行します。文1の処理が終わったら再び式1を評価し、式1がtrueである限り処理を繰り返し、式1がfalseになった時点で処理を終了します。式1が最初からfalseであった場合は、文1は1度も実行されずに処理を終了します。文1}?&gt;PHPのwhile文は、コロン":"と"endwhile;"を用いて、下記のように記述することもできます。while文は、条件式が常にtrueを返すようにしてしまうと無限ループ(処理が永遠に終わらない)になるので注意が必要です。while文は、while文とよく似ています。下記の例では、まず文1を実行します。次に式1を論理値として評価し、結果がtrueであれば再び文1を実行し、処理を繰り返します。式1がfalseになった時点で処理を終了します。while文との違いは、式1が最初からfalseであっても、文1が1度は実行される点です。ごとに実行する式を含めることができます。これは好みにもよりますが、予め反復回数が決まっている処理に用いられることが多いです。下記の例では、まず式1が実行されます。通常は、この式1で変数の初期化処理を行います。次に式2を評価した結果がtrueであれば文1を実行し、falseであれば処理を終了します。通常、式2は条件式となります。文1を実行した後、式3を実行します。通常、式3では式2の条件式で使用する変数の値を変更する処理を行います。次に再び式2を評価し、trueであれば文1の処理を繰り返し、falseであれば処理を終了します。文1}?&gt;PHPのfor文は、コロン":"と"endfor;"を用いて、下記のように記述することもできます。下記の例では、最初に$fooを1で初期化し、$fooが5以下であれば反復処理をします。各反復処理の後、$fooに加算子で1を加えた上で、再び反復条件の判定をします。?&gt;&lt;/ul&gt;foreachforeach文は、配列に対して反復処理を行う構文です。配列に格納された各要素に対して処理を行いたいときに使用します。配列だけでなく、Iteratorインターフェイスを実装したオブジェクトも反復処理することができます。下記の例では、配列の要素が$変数名に格納され、文1が実行されます。これを配列の要素の数だけ繰り返し実行します。通常、文1では$変数名に対して、何らかの処理を行います。文1}?&gt;PHPのforeach文は、コロン":"と"endforeach;"を用いて、下記のように記述することもできます。下記の例では、foreachのループ処理で配列$fooの要素を$valueに取得し、その値をechoにより出力しています。?&gt;&lt;/ul&gt;PHPでは、下記のように記述することで、foreachによる配列の反復処理時にキーを取得することもできます。下記の例では、連想配列$hogeをforeachで反復処理する際に$keyにキーを取得し、echoでの出力に使用しています。気を付けたいのは、PHPではブロックスコープがないため、foreachの処理を抜けた後でも、$keyと$valueには値が残る点です。試しにforeachの後で、$keyと$valueを出力してみると値が残っていることが確認できます。必要に応じて、unset()するようにしましょう。出力:bool(false)?&gt;通常、foreachで配列の要素を変数に取得する際には、要素の値がコピーされていますが、変数名の先頭に&を付けることにより、参照を取得することができます。これにより、もとの配列の要素を変更することができます。下記の例では、2つの配列の要素にforeachの処理で10を足しています。要素を取得する変数名に&を付けていない配列$barの要素は変更されていないのに対して、&を付けた配列$bazの要素は、値が変更されていることが確認できます。foreachの処理で参照を取得した場合、foreachの処理を終えた後にも変数が参照を保持している点には、注意が必要です。下記では、foreachの処理後に$valueに対して別の値を代入していますが、$bazの要素まで書き換えられていることが確認できます。これは思わぬバグにつながりかねないので、必ずunset()することを心掛けましょう。'書き換えられました。&quot;書き換えられました。&quot;書き換えられました。}?&gt;switchswitch文は、条件分岐処理を行います。一つの式の値が何であるかによって、処理を分岐したい場合によく用いられます。下記の例では、まず式1の値を評価し、上から順番にcaseの値1〜値Nに等しい値を探します。等しい値があれば、それに続く文を実行し、次のbreak文でswitchの処理を終了します。等しい値がない場合は、defaultの文4を実行し、break文で処理を終了します。break;}?&gt;PHPのswitch文は、コロン":"と"endswitch;"を用いて、下記のように記述することもできます。defaultの処理が必要なければ、省略可能です。下記の例では、defaultを省略しているため、$fooが2であった場合は、何も処理を行わずにswitch文を終了します。'$fooは、0です。'$fooは、1です。出力:$fooは、1です。*/?&gt;また、各caseにおいてbreak文を省略することもできます。この場合、次にbreak文がくるまでの処理を実行します。switch文で気を付けたいのは、値の比較が===による厳密な比較ではない点です。下記の例では、整数と文字列を比較していますが、自動的にキャストされて処理されていることがわかります。