【PHP】if文

Image

if文は条件分岐の構文です。
渡された値が条件を満たしている場合にのみ処理を実行します。
ifの書式は以下の通りです。

if(条件){
// 条件を満たした場合の処理を記述
}

条件の部分には比較演算子や論理演算子等を使用します。
(演算子を忘れた方は以下のページで復習しましょう。)

演算子

例として簡単な条件でif文のプログラムを書いてみましょう。

テストの合格者だけを判定するプログラムがあるとします。
合格できるのは90点以上の点数が取れた生徒だけです。

条件はテストの点数が90点以上の部分になります。
点数が90点以上であれば合格ですので、比較演算子を使って点数が合格点以上であるかを判断します。

<?php

  // 点数を保持する変数
  $score = 95;

  if($score >= 90){
  // 点数が90以上の場合の処理
  echo "合格";
  }

?>


Demo

上記コードを実行すると合格という文字列が出力されます。
テストの点数は95点。
もしテストの点数が90点以上であればという条件なので、if文の処理が実行されたということです。
試しに点数を保持する変数に80という数字を入れてみましょう。

<?php

// 点数を保持する変数
$score = 80;

if($score >= 90){
// 点数が90以上の場合の処理
echo "合格";
}

?>


Demo

デモでご確認いただけるように何も出力されずに処理が終了します。
それは点数を保持する変数の値が条件を満たしていないからです。
if文は条件を満たした場合にのみ処理が実行されます。
満たさなければ何も実行されません。
何となくif文の動きがご理解いただけたかと思います。

次はif文を使って複数の条件を分岐する構文をご紹介します。

elseif文

elseif文は複数の条件を分岐させたい場合に利用します。
書式は以下の通りです。

if(条件){
// 条件を満たした場合の処理を記述
}else{
// 条件を満たさなかった場合の処理を記述
}

条件を満たさなかった場合にさらに条件を設定するには以下のようにします。

if(条件1){
// 条件1を満たした場合の処理を記述
}elseif(条件2){
// 条件1は満たしていないが、
// 条件2を満たした場合の処理を記述
}else{
// どちらの条件も満たしていない場合の処理を記述
}

それではelseifの構文を利用して簡単なプログラムを書いてみます。
先ほどの点数を判断するプログラムに90点未満であれば不合格にする処理を追加してみます。

<?php

  // 点数を保持する変数
  $score = 80;

  if($score >= 90){
  // 点数が90以上の場合の処理
  echo "合格";
  }elseif($score < 90){
  // 点数が90未満の場合の処理
  echo "不合格";
  }

?>


Demo

点数は80点。
もし点数が90点以上であれば合格、90点未満であれば不合格という処理です。
上記のコードを実行すると不合格と表示されます。

それではあと一つ条件を追加してみましょう。
テストを受けられなかった生徒のために再テストの機会を設けます。
点数に値がない場合は再テストとし、点数を判断する前に処理を追加します。

<?php

  // 点数を保持する変数
  $score = null;

  // 点数があれば中へ
  if($score){
  if($score >= 90){
  // 点数が90以上の場合の処理
  echo "合格";
  }elseif($score < 90){
  // 点数が90未満の場合の処理
  echo "不合格";
  }

  // 点数がなければこちらへ
  }else{
  echo "再テスト";
  }

?>


Demo

上記コードのようにある処理の中に処理を書くことを入れ子構造と言います。
ネストとも呼ばれています。
ネストすることによって細かく条件を設定することができますので、覚えておきましょう。