制御構文・制御構造とは
構造化プログラミング(順次・選択・反復)を行うための仕組み。
PHPにおける制御構文
条件分岐(選択)
・if文
・if-else文
・switch文
・三項演算子
ループ処理(反復)
・while文 ループ処理
・for文 カウンタ変数(整数)を利用したループ処理
・foreach文 配列専用のループ処理
条件分岐・ループを制御する文(ステートメント)
・break文 条件分岐やループ処理を止める。
・continue文 ループ処理をスキップする。
条件分岐 if文 if-else文 switch文
if文
構文
if(条件式){
条件式がtrueのときに実行される処理;
}
falseだった場合は、カッコ内は実行されず波括弧の閉じ後が処理される。
※条件式の値のデータ型がbooleanでない場合にはデータ型が自動変換(キャスト)される。
if-else文
構文
if(条件式){
条件式がtrueのときに実行される処理;
}else{
条件式がfalseのときに実行される処理;
}
※式とは、値・変数・演算子・関数を組み合わせたもの。
※{}の省略
{}内の処理が一つだけの場合は、{}を省略することができる。
但し、複数の場合は省略不可。
switch文
switch分は条件式の結果の値をそのまま処理の分岐に使用できる。
if分は条件式の結果はbooleanのみ。
構文
switch(条件式){
case 値1:
条件式の値が値1の場合実行する処理;
break;
case 値2:
条件式の値が値2の場合実行する処理;
break;
case 値3:
条件式の値が値3の場合実行する処理;
break;
default:
式の値がどのcase文にも該当しないときの処理;
break;
}
※case文は複数設定可能。
default文は記述してもしなくても可。
三項演算子
構文
条件式 ? 条件がtrueのときの値 : 条件がfalseのときの値;
ループ処理 while文 for文 foreach文
while文
条件式がtrueの間、繰り返し処理を行う。
構文
while(条件式){
条件式がtrueの間、ループする処理;
}
※開始処理や更新処理が不要なループ処理を実行する場合に使う。
while文をfor文のように使う場合。
カウント変数の設定;
while (条件式){
条件式がtrueの間、ループする処理;
更新・ループするたびに行う処理;
}
for文
カウンタ変数(値が整数)を利用して繰り返し回数を指定してループ処理を行う制御文。
構文
for(初期値(カウンタ変数); ループ継続条件式 ; 増減式(カウンタ変数)){
繰り返し(ループ)処理;
(条件式がtrueの時に行う処理)
}
falseの場合はfor文から抜ける。
foreach文
配列専用のループ処理。
配列の値を1つずつ取り出して、ループする。
配列の要素数だけループする。
取り出した値は変数に代入され処理の中で利用することができる。
構文
foreach(配列 as 値を代入する変数){
変数を使った処理;
}
配列のキーと値を1つずつ取り出して、ループする。
配列の要素数だけループする。
取り出したキーと値は変数に代入され、処理の中で利用することができる。
構文
foreach(配列 as キーを代入する変数 => 値を代入する変数){
キーの変数と値の変数を使ったを使った処理;
}
条件分岐・ループを制御する文(ステートメント)
break; break文 break命令
条件分岐処理やループ処理を強制的に中断する命令。
switch文 for文 foreach文 while文で利用できる。
制御文がネストの場合。
一番内側のループ・条件分岐から脱出できる。
continue; continue文
処理をその場で中断して(後続の処理はせずに)次のループ処理にスキップする。
制御文がネストの場合。
一番内側のループをスキップする。
:(コロン)を使った制御構文の表記
開始の{ 波括弧 → :
終了の }波括弧 → end〇〇;
if(条件式): endif;
switch(条件式): endswitch;
while(条件式): endwhile;
for(条件式) : endfor;
foreach(条件式): endforeach;
if(条件式): endif;
構文
if(条件式1):
条件式がtrueの場合の処理;
elseif(条件式2):
条件式1がfalseで条件式2がtrueの場合の処理;
else:
どの条件も満たさない場合の処理;
endif;
while(条件式): endwhile;
構文
while(条件式):
条件式がtrueのときの処理
条件式が最終的にfalseになるための処理
endwhile;