2023.07.23
【PHP】基礎 条件分岐、ループ

UnsplashAdam Koolが撮影した写真

条件分岐

if文

if([条件式1]){
 //条件1がtrueの時の処理
}elseif([条件式2]){
 //条件2がtrueの時の処理
}else{
 //どの条件もfalseの時の処理
}

以下コードの例です。

$a = 80;
if($a >= 100){
  echo '$aは100以上です';
}elseif($a >= 50){
  echo '$aは50以上です';
}else{
 echo '$aは50未満です';
}

if文は「{}」を使わない書き方があります。
HTMLの中にPHPを埋め込む際には次の書きかたの方がコードが見やすくなります。

if([条件式1]):    ⇐コロン
 //条件1がtrueの時の処理
elseif([条件式2]): ⇐コロン
 //条件2がtrueの時の処理
else:       ⇐コロン
 //どの条件もfalseの時の処理
endif;      ⇐セミコロン

switch文

switch([$変数]{
 case [値A]:
  //$変数の値が値Aの時の処理
  break
 case [値B]:
  //$変数の値が値Bの時の処理
  break
 default:
  //上記caseに合致しない時の処理
}

※「break」が無いと合致したcase以降の処理を全て実行してしまいます。

暗黙的な型変換とその真偽値

以下のように変数のみを条件式とした場合の動作についてです。

$a = 3;
if($a){  ⇐$aは「数値型」で「0以外」の数値なので「true」
 //処理
}

↑のように書く場合もあるかと思うので下の表を覚えておくと便利です。

truefalse
数値型0以外0
文字列型空でない時空の時
配列型要素数1以上の時要素数0の時  

プログラムを強制終了する(exit、die、return)

プログラムを強制終了するコードは条件分岐と一緒に使う機会が多いと思うので、一緒にまとめます。

exit

プログラムを強制終了させるにはexitもしくはdieを使います。
exitもdieも同じ動作をするのでどっちを使ってもOKです。

終了時のメッセージを返さないこともできるexit命令を使った方が無難かもしれません。

exit;            //終了時のメッセージを返さず終了
exit('終了時のメッセージ'); //終了時のメッセージを返す

※終了時のメッセージ有りの場合、終了メッセージが数値か文字列かによって動作が変わります。
 数値の場合 :何も出力しない
 文字列の場合:その文字列を出力する

die

die(‘終了時のメッセージ’);

return

returnは関数の中で使います。returnが呼び出された行で処理が終了し、関数の呼び出し元に戻り値を渡します。

return;       //戻り値無しで処理を終了
return '処理終了!'; //戻り値を設定して処理を終了

ループ

foreach

配列、連想配列、オブジェクトの全要素をループする処理です。

配列のループ

foreach($arr as $val){
 echo $val
}

配列を参照渡しでループ

※参照渡し:元の配列の値を書き換えられます。

foreach($arr as &$val){
 $val = "値";
}
unset($val); ⇐必ず記述する

連想配列のループ

foreach($arr as $key => $val){
 echo "キー:{$key}、値:{$val}";
}

連想配列を参照渡しでループ

※参照渡し:元の配列の値を書き換えられます。

foreach($arr as $key => &$val){
 $val = '値';
}
unset($val);

オブジェクトのループ

foreach($obj as $val){
 echo $val->name;
}

foreachの「{}」無しの書き方

foreachもif文同様に「{}」無しの書き方があります。
HTMLにPHPを埋め込む際には「{}」無しの方がコードが見やすくておすすめです。

foreach($arr as $val):
 echo $val;
endforeach;

forループ

任意の回数ループする処理です。

基本のforループ

以下がforループの記述例です。

for($i = 0; $i < 5; $i++){
 echo "{$i}回目のループです";
}

forループの「{}」無しの書き方

for($i = 0; $i < 5; $i++):
 echo "{$i}回目のループです";
endfor;

whileループ

任意の条件を満たす限りループする処理です。

基本のwhileループ

以下がwhileループの記述例です。

$num = 100;
while($num < 200){
 echo $num, PHP_EOL;
 $num += 30;
}

whileループの「{}」無しの書き方

$num = 100;
while($num < 200):
 echo $num, PHP_EOL;
 $num += 30;
endwhile;

ループを抜ける(break)、次のループに移る(continue)

ループ中にループを中断したり、次のループに移りたくなることは多いと思います。

そのための命令のbreakとcontinueについてです。
・break :強制的にループを抜ける
・continue:強制的に次のループに移る

break

breakの記述例は以下です。

for($i = 0; $i < 5; $i++){
 if $i == 3{
  break   ⇐$iが3になったらループを抜ける
 }
 echo $i, PHP_EOL;
}

continue

continueの記述例は以下です。

for($i = 0; $i < 5, $i++){
 if $i == 3{
  continue;  ⇐$iが3の時はechoせず次にループに移る
 }
 echo $i, PHP_EOL;
}