1. ホーム 
  2. 備忘録 
  3. PHP

条件分岐

if文

書き方その1

if( $var > 0 ) {
  echo '$varは1以上の値です';
} elseif( $var === 0 ) {
  echo '$varは0です';
} else {
  echo '$varは1以上でも0でもありません。負の値です。';
}

書き方その2

if( $var > 0 ) 
{
  echo '$varは1以上の値です';
}
elseif( $var === 0 )
{
  echo '$varは0です';
}
else
{
  echo '$varは1以上でも0でもありません。負の値です。';
}

書き方その3

if( $var > 0 ):
  echo '$varは1以上の値です';
elseif( $var === 0 ):
  echo '$varは0です';
else:
  echo '$varは1以上でも0でもありません。負の値です。';
endif;

後ろに続く処理が1つだけであれば、1行で書くことも多い


※以下は個人的な使い分けメモです

PHPコードだけであれば、基本的にその1とその2を使用する

その3の書き方は if~endif; により開始・終了点がわかりやすいため、HTMLコードも挟む場合に使用する

スペースは変数や値、条件式と{}の間にあると見やすい


switch文

書き方その1

switch( $i ) {
  case 0:
  case 1:
  case 2:
    echo 'iは0以上3未満の整数'
    break;
  case 3:
    echo 'iは3';
  default:
    echo 'iは0~3以外の値'
    break;  //!< 最後の行は省略可
}

書き方その2

switch( $i )
{
  case 0:
  case 1:
  case 2:
    echo 'iは0以上3未満の整数'
    break;
  case 3:
    echo 'iは3';
  default:
    echo 'iは0~3以外の値'
    break;  //!< 最後の行は省略可
}

書き方その3

switch( $i ):
  case 0:
  case 1:
  case 2:
    echo 'iは0以上3未満の整数'
    break;
  case 3:
    echo 'iは3';
  default:
    echo 'iは0~3以外の値'
    break;  //!< 最後の行は省略可
endswitch;

switch文の条件式部分は緩やかな比較( $a === $b ではなく $a == $b )であることに注意する

ループ処理中であれば、break ではなく continue を置くこともできる

使い分けやスペース周りはif文と同様のため割愛


match文

$result = match (制約式) {
  単一の条件式 => 返却式,
  条件式1, 条件式2 => 返却式,
};

PHP 8.0.0 以降から使用可能

switch 文とは異なり弱い比較(==)ではなく、型と値の一致チェック(===) に基づいて行われる

switch 文と異なり条件ごとに break を書かなくても後ろの処理は実行されない

$animal = 'dog';

$result = match ($animal) {
  'neko', 'cat' => 'This animal is an cat', // neko か cat の文字列なら出力
  'inu', 'dog' => 'This animal is a dog', // inu か dog の文字列なら出力
  'wani', 'alligator' => 'This animal is a alligator',  // wani か alligator の文字列なら出力
  default => callName(),  // それ以外(デフォルト)ならcallName関数の戻り値で出力
};

echo $result; // This animal is a dog