UPDATE:2019年06月28日
PHP の if 文 条件式による分岐処理
if文 簡単まとめ
- 「もし ~ なら ・・ する」if (式 ~ ) 文・・123456if(TRUE) echo 'if式真です。';//if式真です。$i = 10;if($i == 10) echo '変数 $i の値は '.$i.' です。';//変数 $i の値は 10 です。
- if文 は 式 の結果を評価して「真(TRUE)」の場合に 文(処理) を実行し、「偽(FALSE)」であれば 文(処理) は無視される
式 詳しくはこちら - if文 の式の結果は論理型で得る 論理型 詳しくはこちら
- 文(処理)が複数ある場合は「{ }(ブロック)」で括るif (式 ~ ) {
文・・
文・・
文・・
}12345678<?php$i = 10;if($i == 10) {echo '変数 $i の値は ';echo $i;echo ' です。';}?> - if文 は if文 の中に幾らでも記述することが出来きる ネスト(入れ子)が可能if (式 ~ ) {
if (式 ~ ) {
if (式 ~ ) {
文・・
}
}
}12345678<?php$a = 1; $b = 2; $c = 3;if($a < $b){if($b < $c){echo '$aより$bは大きい。$bより$cは大きい。';}}?> - ※文とはコードの記述単位の1つで、PHPの場合は「;(セミコロン)」で区切られるまでのコード
if文 とは
if文 は条件を示す文です。条件によって処理を切り替えることが出来ます。if文 はある式( if(条件式) )の値が「真(TRUE)」であるかどうかを調べ、式の値が「真(TRUE)」である場合に文を実行します。式の値が「偽(FALSE)」の場合は文は無視されます。
日本語にすると「もし ~ なら ・・ する」ということになります。「 ~ 」の部分が 式 で「 ・・ 」の部分が 文 に相当します。
1 2 3 4 5 | if(式 ~ ) 文 ・・ //文が1つの場合は改行しても大丈夫 if(式 ~ ) 文 ・・ |
文とはコードの記述単位の1つで、PHPの場合は「;(セミコロン)」で区切られるまでのコードです。
1 2 3 4 | <!-- サンプルコード --> <?php echo 'Hello '; echo 'World!!'; ?> |
これは文が2つあることになります。
if文 の 式 は論理値を返す
- if文 の 式 は、論理値の「真(TRUE)」「偽(FALSE)」の値を返す式を作る
if文 はある式の値の「真(TURE)」「 偽(FALSE)」を調べるので、if文 の式の結果は「真(TURE)」「偽(FALSE)」の論理型で得る必要があります。論理型とは 真 偽 を表す値の型です。この型の値は 論理値 である キーワード の TREU ( true ) と FALSE ( false )のどちらかです。大文字小文字の区別はありません。FALSE と見なされる値は 空の文字列 や 整数の0 などで、FALSE 以外は TRUE と判定されます。詳しくはこちらをお読みください。
そのためには、式に「比較演算子」や「論理演算子」など使用して、論理値の「真(TRUE)」「偽(FALSE)」の値を返す式を作ります。式とは値があるもののことで、最も簡単な式はリテラル値(数値や文字列など値そのもの) 定数 変数 などです。演算子を使用すれば複雑な式を作ることができます。
1 は 1 という値を持った式で、「真(TURE)」と判定されます。
1 2 3 | <?php if(1) echo '真です。';//真です。 ?> |
比較演算子は「if(10 == 10)」の「==」などです。論理演算子は「if((10 == 10) and (20 == 20))」の and などです。演算子についてはこちらを参照下さい。
プログラムを記述する上で様々な条件によって処理を分岐させたい場合があります。例えば、ある変数の値が 10 の場合は A を実行、20 の場合は B を実行、などのように、条件によって実行内容を分岐させる場合です。このような場合に if文 を使用します。
1 2 3 4 5 | <!-- サンプルコード --> <?php $a = 20; if($a === 20) echo '$aの値は20です。'; ?> |
結果は
となります。
比較演算子「 === 」はデータ型の比較も行います。
以下の場合は文は無視されます。
1 2 3 4 5 | <!-- サンプルコード --> <?php $a = 20; if($a === 10) echo '$aの値は20です。'; ?> |
結果は
となります。
構文
if文 の基本構文
//文が1つの場合は改行しても大丈夫
if (式 ~ )
文・・
単純な条件式の例
1 2 3 4 | <!-- サンプルコード --> <?php if(1) echo 'TRUE'; ?> |
結果は
となります。
例の整数値「1」は1という値を出力する単純な式です。PHPではFALSEと見なされる以外はすべてTRUEと評価されます。「1」は式であり、「真(TRUE)」の論理値を返し、「echo」の文が実行されます。
比較演算子を利用した条件式の例
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $a = 1; $b = 1; if($a === $b) echo 'aとbは同一です。'; ?> |
結果は
となります。
比較演算子「===」を使用した真偽を求める式です。「===」は同一である場合に「真(TRUE)」を返します。この演算子は左辺と右辺のデータ型が同じであるかも調べます。
論理演算子を利用した条件式の例
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $a = 1; $b = 1; if($a and $b) echo 'aとbはTRUEです。'; ?> |
結果は
となります。
論理演算子「and」を使用した真偽を求める式です。「and」は右辺と左辺が「真(TRUE)」である場合に「真(TRUE)」を返します。
文が複数ある場合は「{ }(ブロック)」で括る
文を複数実行する場合は、文を「{ }(ブロック)」で囲みます。
文・・
文・・
文・・
}
文とはコードの記述単位の1つで、PHPの場合は「;(セミコロン)」で区切られるまでのコードです。「 { } (波括弧 ) 」で括れば複数の文を記述することができます。
例
1 2 3 4 5 6 7 8 9 10 | <!-- サンプルコード --> <?php $a = 1; $b = 1; if($a === $b) { echo '$aは:'.$a; echo "<br>\n"; echo '$bは:'.$b; } ?> |
結果は
$bは:1
となります。
例は比較演算子「===」を使用した真偽を求める式です。「===」左辺の値と右辺の値が同一である場合に「真(TRUE)」を返します。この演算子は左辺と右辺のデータ型が同じであるかも調べます。
if文 は if文 の中に記述することができる
if (式 ~ ) {
if (式 ~ ) {
文・・
}
}
}
例
1 2 3 4 5 6 7 8 9 10 11 | <!-- サンプルコード --> <?php $a = 1; $b = 2; $c = 3; if($a < $b){ if($b < $c){ echo '$aより$bは大きい。$bより$cは大きい。'; } } ?> |
結果は
となります。
例は比較演算子「<」を使用した真偽を求める式です。「<」は左辺より右辺がより大きい場合に「真(TRUE)」を返します。
比較演算子
比較演算子とは
- 比較演算子 は、左右のオペランドを比較する
- 比較演算子 は、結果を論理値「TRUE(真)」「FALSE(偽)」で返す
比較演算子は左辺オペランドと右辺オペランドを比較します(オペランド:演算の対象となる値や変数や式のこと)。比較の結果が真なら論理値の「true(真)」を返し、そうでない場合は論理値の「false(偽)」を返します(論理型 詳しくはこちら)。オペランドには数値や文字列の両方が使用できます。また他のさまざまな型を比較できます。
比較演算子の種類
比較演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
== | 等しい | 1 | 結合しない | $a == $b | 型の相互変換をした後で $a が $b に等しい時に TRUE。 |
=== | 同じ | 1 | 結合しない | $a === $b | $a が $b に等しく同じ型である場合に TRUE |
!= | 等しくない | 1 | 結合しない | $a != $b | 型の相互変換をした後で $a が $b に等しくない場合に TRUE |
<> | 等しくない | 1 | 結合しない | $a <> $b | 型の相互変換をした後で $a が $b に等しくない場合に TRUE |
!== | 同じでない | 1 | 結合しない | $a !== $b | $a が $b と等しくないか、同じ型でない場合に TRUE |
> | より大きい | 2 | 結合しない | $a > $b | $a が $b より大きい時に TRUE |
< | より小さい | 2 | 結合しない | $a < $b | $a が $b より小さい時に TRUE |
>= | 以上 | 2 | 結合しない | $a >= $b | $a が $b より大きいか等しい時に TRUE |
<= | 以下 | 2 | 結合しない | $a <= $b | $a が $b より小さいか等しい時に TRUE |
<=> | 宇宙船 | 2 | 結合しない | $a <=> $b | $a が $b より小さいときに負の値、 $b と等しいときに 0、 $b より大きいときに正の値。(PHP7以降で使用可能) |
比較演算子については「PHP の 比較演算子 のすべて【初心者向け】」をご覧下さい。
論理演算子
論理演算子とは
- 論理演算子 は 論理値を評価し論理値を返す
- 論理演算子 は アルファベット版 と 記号版 がある
- アルファベット版の優先順位が上
論理演算子は論理値を評価し、結果を論理値で返します。オペランドは論理値とされます。(オペランドとは演算子の対象となる数値や文字列や式などの値のこと)。論理値は「真」「偽」を表す値であり、キーワード「TREU」と「FALSE」で表されます。論理値の詳細についてはこちらを参照下さい。
論理演算子はアルファベット版と記号版の2種類あります。アルファベット版と記号版では評価の優先順位が異なり、アルファベット版の優先順位が上です。
論理演算子の種類
論理演算子の種類、優先順位、結合時の評価です。すべての演算子の種類や優先順位はこちらを参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
and | 論理積 | 3 | left | $a and $b | $a および $b が共に TRUE の場合に TRUE |
or | 論理和 | 1 | left | $a or $b | $a または $b のどちらかが TRUE の場合に TRUE |
xor | 排他的論理和 | 2 | left | $a xor $b | $a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE |
! | 否定 | 6 | right | ! $a | $a が TRUE でない場合 TRUE |
&& | 論理積 | 5 | left | $a && $b | $a および $b が共に TRUE の場合に TRUE |
|| | 論理和 | 4 | left | $a || $b | $a または $b のどちらかが TRUE の場合に TRUE |
論理演算子については「PHP の 論理演算子」をご覧下さい。
型の比較表
== による緩やかな比較
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE |
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE |
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE |
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | TRUE |
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | FALSE |
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE |
=== による厳密な比較
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | "" | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
PHP 関数による $x の比較
※HTMLフォームは整数、浮動小数点数、boolean を渡しません。文字列を渡します。例えば、html form の input で整数型の値を送信しても受信した値は文字列型になります。
※注意: $x が定義されていない状態で単に if($x) とすると、E_NOTICE レベルのエラーが発生します。代わりに、empty() や isset() を使うか、あるいは 変数$x を初期化するようにしてください。
1 2 3 | <?php if($s) echo '真です。'; else echo '偽です。'; //E_NOTICEエラー発生 ?> |
1 2 3 4 | <?php $s = '';//初期化 if($s) echo '真です。'; else echo '偽です。'; ?> |
1 2 3 | <?php if(isset($s)) echo '真です。'; else echo '偽です。'; //初期化していなくてもエラーなし ?> |
1 2 3 | <?php if(empty($s)) echo '真です。'; else echo '偽です。'; //初期化していなくてもエラーなし ?> |
式 | gettype() | empty() | is_null() | isset() | boolean : if($x) |
---|---|---|---|---|---|
$x = ""; | string | TRUE | FALSE | TRUE | FALSE |
$x = null; | NULL | TRUE | TRUE | FALSE | FALSE |
var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
$x が未定義 | NULL | TRUE | TRUE | FALSE | FALSE |
$x = array(); | array | TRUE | FALSE | TRUE | FALSE |
$x = array('a', 'b'); | array | FALSE | FALSE | TRUE | TRUE |
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = "1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "0"; | string | TRUE | FALSE | TRUE | FALSE |
$x = "-1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "php"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "true"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "false"; | string | FALSE | FALSE | TRUE | TRUE |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <!-- サンプルコード --> <h3>簡単なif文 結果がTREUの場合</h3> <?php if(1) echo 'TRUEです。'; ?> <h3>簡単なif文 結果がFALSEの場合</h3> <?php if(0) echo 'TRUEです。';//文が無視されます。 ?> <h3>if文 比較演算子</h3> <?php $a = 1; $b = 1; if($a === $b) echo 'aとbは同一です。'; ?> <h3>if文 論理演算子</h3> <?php $a = 1; $b = 1; if($a and $b){ echo '$aは:'.$a; echo '<br>'; echo '$bは:'.$b; } ?> <h3>if文 入れ子</h3> <?php $a = 1; $b = 2; $c = 3; if($a < $b){ if($b < $c){ echo '$aより$bは大きい。$bより$cは大きい。'; } } ?> |
TRUEです。
簡単なif文 結果がFALSEの場合
if文 比較演算子
aとbは同一です。
if文 論理演算子
$aは:1
$bは:1
if文 入れ子
$aより$bは大きい。$bより$cは大きい。
タグ(=記事関連ワード)
日付
最終更新日:2019年06月28日