条件分岐if()

条件によって処理を行うためのif()

if(){}は()の中の条件が真の時に{}中が実行されます。

条件は真偽(TRUE/FALSE)で判定され、正しいか間違いか、成功か失敗か、を意味します。

<?php
header("Content-type: text/html; charset=shift_jis");
$a=1;
$b='001';
$c=$a;

if($a == 1){echo '$aは 数字の 1 です<br />'."\n";}
if($a != 2){echo '$aは 数字の 2 ではありません<br />'."\n";}
if($b == 1){echo '$bは 数字の 1 です<br />'."\n";}
if($b == '01'){echo '$bは 文字列 01 です<br />'."\n";}
if($c == 1){echo '$cは 数字の 1 です<br />'."\n";}

?>

実行結果
$aは 数字の 1 です
$aは 数字の 2 ではありません
$bは 数字の 1 です
$bは 文字列 01 です
$cは 数字の 1 です

サンプルのダウンロードはこちら
  ※ ソースは右クリックの「名前を付けて保存/対象をファイルに保存」で拡張子の.txtを削除して保存してください

==は左辺と右辺が正しい時に真を返します。$a == 1なら$aは1ですので真となり{}の中のechoによる文字列の表示が行われます。

!=は反対に左辺と右辺が正しくないときに真を返すので、$a != 2は正しくないので真となり、 {}の中のechoによる文字列の表示が行われます。

$bは文字列001ですが数字の1でもあるため、$b == 1は真となります。

$bの文字列は001の為、文字列01とは違い、$b == '01'は偽だと予想されますが、PHPは真を返してしまうので注意してください。

$cは$a参照しており、$aの1が格納されているので、$c == 1は真となります。

条件分岐のif()〜else{}

if(){}だけでは、条件が真の時しか処理されません。条件が偽となるときに別の処理を行うためにはif(){}else{}を用います。

条件を複数組み合わせるときはif(){}eleseif(){}else{}を用います。

elseはどの条件にも当てはまらなかったときに処理されるので、()の条件はありません。

<?php
header("Content-type: text/html; charset=shift_jis");
$a=2;
$b='B';

if($a == 1){echo '$aは 1 です<br />'."\n";}
else{echo '$aは 1 ではありませんでした<br />'."\n";}

if($b == "A"){echo '$bは A です<br />'."\n";}
elseif($b == "b"){echo '$bは b です<br />'."\n";}
elseif($b == "B"){echo '$bは B です<br />'."\n";}
else{echo '$bは A b B のどれでもありませんでした<br />'."\n";}
?>

実行結果
$aは 1 ではありませんでした
$bは B です

サンプルのダウンロードはこちら
  ※ ソースは右クリックの「名前を付けて保存/対象をファイルに保存」で拡張子の.txtを削除して保存してください

$aについては、$a == 1が偽となるため、elseが実行されます。

$bについては途中の条件である$b == "B"が真となり、そこが実行されてそれ以外は無視されます。

条件を複数指定したいときはifとelseの間にelseifを必要な分だけ置くことができます。ifとelseはグループに1つだけです。

複雑な条件

条件は複数重ねて置くこともできます。

or また || で繋げるとどちらかが真であればif文としても真になり、and または && で繋げると、すべてが真の時だけif文としても真になります。

<?php
header("Content-type: text/html; charset=shift_jis");
$a='A';
$b='B';
$c='C';
$d='D';

if($a == 'A' && $b == 'C'){echo '1つめ $aが A かつ $bが Cです<br />'."\n";}
if($a == 'A' && $b == 'B'){echo '2つめ $aが A かつ $bが Bです<br />'."\n";}

if($a == 'A' || $b == 'C'){echo '3つめ $aが A または $bが Cです<br />'."\n";}
if($a == 'A' || $b == 'B'){echo '4つめ $aが A または $bが Bです<br />'."\n";}

if($a == 'A' && $b == 'C' && $c == 'C' || $d == 'C'){echo '5つめ $aが A かつ $bが C かつ $cが C または $dが C です<br />'."\n";}
if(($a == 'A' && $b == 'C') || ($c == 'C' && $d == 'C')){echo '6つめ $aが A かつ $bが C または $cが C かつ $dが C です<br />'."\n";}
if(($a == 'A' && $b == 'C') || ($c == 'C' || $d == 'C')){echo '7つめ $aが A かつ $bが C または $cが C または $dが C です<br />'."\n";}

?>

実行結果
2つめ $aが A かつ $bが Bです
3つめ $aが A または $bが Cです
4つめ $aが A または $bが Bです
7つめ $aが A かつ $bが C かつ $cが C または $dが C です

サンプルのダウンロードはこちら
  ※ ソースは右クリックの「名前を付けて保存/対象をファイルに保存」で拡張子の.txtを削除して保存してください

1つめと2つめは$aと$bが真の時に処理されます。

3つめと4つめは$aと$bのどちらかが真であれば処理されます。

5つめは$aと$bと$cが真の時の処理されます。

6つめは$aと$bが真であるか、$cと$dが真であれば処理されます。

7つめは$aと$bが真であるか、$cまたは$dが真であれば処理されます。

その他の条件による判定

上記は分かり易く変数の中身を条件に指定しましたが、変数や配列の状態を条件にすることもできます。

<?php
header("Content-type: text/html; charset=shift_jis");
$a='A';

if(isset($a)){echo "\$aは有効です<br />\n";}
if(!empty($a)){echo '$aには'.$a."が格納されています<br />\n";}
if(!is_array($a)){echo "\$aは配列でははありません<br />\n";}
?>

実行結果
$aは有効です
$aにはAが格納されています
$aは配列でははありません

サンプルのダウンロードはこちら
  ※ ソースは右クリックの「名前を付けて保存/対象をファイルに保存」で拡張子の.txtを削除して保存してください

isset($a)は変数$aが存在すれば真(TRUE)を返します。

empty($a)は変数$aの中身が空であれば真(TRUE)を返します。$a == ""と同じ。

is_array($a)は変数$aが配列であれば真(TRUE)を返します。

その他にも、真偽(TRUE/FALSE)を返すものであれば条件に指定することができます。

これらは先頭に ! を付けることにより真偽を反対にすることもできます。

まとめ

ifは条件が真の時に処理される。

ifが偽の時に無条件に処理するにはelseを用い、条件を付け足すのならelseifを用いる。

複数の条件は&&で繋げるとすべて真の場合に処理され、||で繋げるとどれかが真であれば処理される。

アンケート

評価を選んで下さい

参考になった
理解できたが参考にはならなかった
理解できなかった

該当するものを選んで下さい

書かれていることが難しい
書かれていることが理解しやすい
内容が乏しい
内容が充実している

感想や意見があれば記入して下さい。
サイト作りの参考にさせていただきます。

このページのトップへ ▲