【PHP入門】if文による条件分岐の使い方を基礎から応用まで

PHPでif文(条件式)の使い方を知りたい
if文を使いこなせるようになりたい

PHPに限らずプログラミング言語では、条件によって処理を分岐させるためのif文があります。

if文はプログラミングをする上で最も基本的な処理となりますので、使い方はしっかりと理解しておきましょう。

この記事はこんな人のために書きました。

  • if文の基本的な使い方を知りたい方
  • if文でさまざまな条件分岐の方法を理解しておきたい方

※この記事ではPHPの「Version 7.1.1」で動作確認しました。

目次

前提知識:if文とは

if文の書き方

if文とは、条件が真の場合に処理を実行します。たとえば、条件分岐は以下のように答えが真(true)か偽(false)かで表します。

  • あなたの年齢は20歳以上ですか?
  • テストの点数は50点以上でしたか?

PHPでのif文は以下のように記述します。

if ( 条件 ) {
    // 条件が一致したときに実行する処理
}

条件をカッコ『( )』の中に書き、処理を中かっこ『{ }』に書くことで、条件が一致したとき時だけ処理を実行できます。

条件式にはbool型の真偽値や値の大小、値の一致、関数の実行結果など、さまざまな条件を指定することができます。

if文を実行してみよう

では実際にphpファイルを作成して、if文を実行してみましょう。

以下の例では、値1と値2を比較して$値1の値が大きかったら、if文の処理が実行されます。

<?php

$value1 = 200;
$value2 = 100;

if ($value1 > $value2){
  echo 'value1はvalue2より大きい';
  $value2 = $value1;
}

?>

ファイルを保存してブラウザで実行すると、以下のように表示されます。

value1はvalue2より大きい

if文の基本

以下の例では、ループで配列の中の値を1つずつ取得し、指定した文字列”melon”が存在した場合はbreakで繰り返し処理を抜けています。

<?php

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];
$fruits_name = 'melon';

foreach($fruits as $value){

  if ($value == $fruits_name){
    echo '一致 --> '.$value;
    break;
  }
}

?>
一致 --> melon

このプログラムでで使用したbreakについては、以下の記事でも詳しく解説しています。

if文のネスト

if文はネストとよばれる多重構造でif文の処理の中にif文を記述することが可能です。

以下のサンプルでは、if文をネストしてそれぞれ値を比較しています。

<?php

$value1 = 100;
$value2 = 200;
$value3 = 200;

if ( $value1 < $value2){
  echo 'value1よりvalue2が大きい';
  echo '<br>';
  if ( $value2 == $value3){
    echo 'value2とvalue3は等しい';
  }
}

?>
value1よりvalue2が大きい
value2とvalue3は等しい

if文のネストは、多用しすぎて何重にもif文が重なると処理が分かりづらくなります。可読性やメンテンナンスの面からも、if文のネストは多用しすぎないように注意しましょう。

elseif文の使い方

if文はelseifまたはelse ifを使用して条件を分岐することができます。
※PHPではelseifとelse if(elseとifの間に半角スペース)のどちらを使用しても構いません。

また、if文は複数分岐の場合最後の条件にはelseを指定するのが慣例となっています。

if ($a == $b){
  echo '$aと$bは等しい';
}elseif ($a < $b){
  echo '$aより$bのほうが大きい';
}else{
  echo '$aは$bより大きい';
}

↑の条件式では、

  • ifの条件式が真ならifの処理を実行
  • ifの条件式が偽でelseifの条件式が真ならelseifの処理を実行
  • elseifの条件式も偽ならelseの処理を実行

となります。

実際にelseifを使用した複数条件のサンプルを以下に記述します。


value1はvalue2より大きい

if文の条件が満たされなかったときに他の処理を実行したい場合、つまり条件式の真偽の結果で処理を分岐したい場合は、間にelseifを挟まないで、if~elseの形式で記述することも可能です。

elseは、if文における式の結果がtrueではなくfalseの場合に処理を実行するためにif文を拡張します。

以下にif~else文を使用する方法を記述します。


value1よりvalue2が小さい

if文の応用

比較演算子の使い方

ここでは、if文の条件式で使用できる比較演算子を紹介します。

  • 等しい:$値1 == $値2

$値1 が $値2 に等しい時にTRUEを返します。

  • 等しい:$値1 === $値2

$値1 が $値2 に等しい、および同じ型の場合にTRUEを返します。

  • 等しくない:$値1 != $値2

$値1 が $値2 に等しくない場合にTRUEを返します。

  • 等しくない:$値1 <> $値2

$値1 が $値2 に等しくない場合にTRUEを返します。

  • 等しくない:$値1 !== $値2

$値1 が $値2 と等しくない、および同じ型でない場合にTRUEを返します。

  • より少ない:$値1 < $値2

$値1 が $値2 より少ない時にTRUEを返します。

  • より多い:$値1 > $値2

$値1 が $値2 より多い時にTRUEを返します。

  • より少ないか等しい:$値1 <= $値2

$値1 が $値2 より少ないか等しい時にTRUEを返します。

  • より多いか等しい:$値1 >= $値2

$値1 が $値2 より多いか等しい時にTRUEを返します。

以下に比較演算子を使用した簡単なサンプルを紹介します。

<?php

$value1 = 100;
$value2 = '100';

//型を比較する
if ($value1 === $value2){
  echo 'value1とvalue2は等しいです。';
}else{
  echo 'value1とvalue2は等しくありません。';
}

echo '<br>';

//一致しないか比較する
if ($value1 !== $value2){
  echo 'value1とvalue2は等しくありません。';
}else{
  echo 'value1とvalue2は等しいです。';
}

?>
value1とvalue2は等しくありません。
value1とvalue2は等しくありません。

論理演算子の使い方

ここでは、if文の条件式で使用できる論理演算子を紹介します。

  • 論理積:$値1 and $値2

$値1 および $値2 が共にTRUEの場合にTRUEを返します。

  • 論理和:$値1 or $値2

$値1 または $値2 のどちらかがTRUEの場合にTRUEを返します。

  • 排他的論理和:$値1 xor $値2

$値1 または $値2 のどちらかがTRUEでかつ両方ともTRUEでない場合にTRUEを返します。

  • 否定:! $値1

$値1 が TRUEでない場合にTRUEを返します。

  • 論理積:$値1 && $値2

$値1 および $値2 が共にTRUEの場合にTRUEを返します。

  • 論理和:$値1 || $値2

$値1 または $値2 のどちらかがTRUEの場合にTRUEを返します。

以下に論理演算子の論理積と否定を使用した簡単なサンプルを紹介します。

<?php

$value_array1 = [100, 100];
$value_array2 = [200, 200];

//配列の各要素の値をそれぞれ比較する
if (($value_array1[0] == $value_array1[1]) and
    ($value_array2[0] == $value_array2[1])){

  echo 'ともに等しいです';
}

echo '<br>';

$value = 100;
//値が配列か判断する
if (!is_array($value)){
  echo 'valueは配列ではありません';
}

?>
ともに等しいです
valueは配列ではありません

PHPについてもっと知りたい方へ

いかがでしたでしょうか?

  • PHPについて実はいまいちわかっていない…
  • もっとPHPについて詳しく知りたい!

と思っている方は以下の記事も参考にしてみてください。

まとめ

ここでは、ifの基本やelseifの基本的な使い方、ネストの方法、比較演算子や論理演算子の使い方、if〜else文の使い方などを紹介しました。

if文は値を比較して処理を分岐するときによく使用します。もしif文の使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次