PHPリファレンス
UPDATE:2020年07月10日
PHP の 三項演算子(条件演算子)
PHP4 PHP5 PHP7
1 Minute Note
? : 三項演算子(条件演算子) |
- (条件式) ? 真の場合の式 : 偽の場合の式;
- 式に対して式を評価する
条件式 ? 真の場合の式 : 偽の場合の式 ;
1 2 3 4 | <?php echo (TRUE) ? '真です' : '偽です'; //真です echo (FALSE) ? '真です' : '偽です'; //偽です ?> |
三項演算子 は PHP で唯一3つの演算対象の値がある演算子です。条件式が真の場合と偽の場合の何れかの結果を返えす条件分岐を行います。
三項演算子とは
POINT
式に対して式を評価する
- (条件式) ? 真の場合の式 : 偽の場合の式;
三項演算子(条件演算子) はオペランド(演算子の対象となる値)を3つ使用するPHP唯一の条件演算子です「1つ目の式 ? 2つ目の式 : 3つ目の式 ;」。三項演算子「 ? : 」は「 ? 」の左辺の式を評価し、結果が「真(TRUE)」の場合は「:」の左辺の式の値を返し、「偽(FALSE)」の場合は「:」の右辺の式の値を返します。式に対して式を評価します。
PHPの 式 とは 値があるもの のことです。最も 簡単な式 は リテラル値/定数/変数です。例えば、1 とは 1 という値を持つ式 となります。一方で、 1 + 2 というような式は + という算術演算子を使用した複雑な式になります。
PHPの式についてはこちらを参照下さい。
条件演算子の詳細は制御文の条件演算子を参照下さい。
PHPの式についてはこちらを参照下さい。
条件演算子の詳細は制御文の条件演算子を参照下さい。
演算子 | 名前 | 優先順位 | 結合時の評価 | 例 | 結果 |
---|---|---|---|---|---|
? : | 三項演算子 条件演算子 | 1 | left | $a ? $b : $c | $a が TRUE の場合に $b FALSE の場合に $c。 |
例
条件式 (1) は「真」と評価されます。「?」の式の値を返します。
1 2 3 4 | <!-- サンプルコード --> <?php echo (1) ? 'TRUE' : 'FALSE'; ?> |
結果は
TRUE
となります。
条件式 (1) のように、PHP では、関数や演算子、制御構造(条件文など)などのが 論理型 の引数を必要とする場合があります。例えば、or や and などの論理演算子、if文 などの 制御構造(条件文など) などです。三項演算子の式もその1つです。(1) の括弧内は論理型の値を必要とします。その際、多くのケースで値は自動的に論理型に変換(キャスト)されます。論理型に変換される場合、以下の値はすべて FALSE と見なされます。それら以外は TRUE と見なされます。ですので、数字の 1 は 真(TRUE) と見なされます。
- 表示なし
- キーワード FALSE
- 整数 0 と -0
- 浮動小数点 0.0 と -0.0
- 空の文字列 "" や ''
- 文字列としての0 "0"
- 要素数が 0 の配列 $aValue= array();
- プロパティーはメソッドを含まない空のオブジェクト
- NULL値
- 値が定義されていない変数
例
条件式 (1 == 1) は「真」と評価されます。「?」の式の値を返します。
1 2 3 4 | <!-- サンプルコード --> <?php echo (1 == 1) ? 'TRUE' : 'FALSE'; ?> |
結果は
TRUE
となります。
例
条件式 (1 == 2) は「偽」と評価されます。「:」の式の値を返します。
1 2 3 4 | <!-- サンプルコード --> <?php echo (1 == 2) ? 'TRUE' : 'FALSE'; ?> |
結果は
FALSE
となります。
例
条件式 ($a === $b) は「真」と評価されます。「?」の式の値を返します。
1 2 3 4 5 6 | <!-- サンプルコード --> <?php $a = 10; $b = 10; echo ($a === $b) ? $a*$b : $a/$b; ?> |
結果は
100
となります。
フォームを利用した問題形式の例
フォームを利用し、漢字の読みの問題を 条件演算子 を使用して作成したサンプルです。
question.php
1 2 3 4 5 6 7 8 | <form action="answer.php" method="post"> ●問題1:「陸蓮根」の読み<br> <input type="text" name="q1" size="30"><br> ●問題2:「鹿尾菜」の読み<br> <input type="text" name="q2" size="30"><br> <br> <input type="submit" value="回答する"> </form> |
answer.php
1 2 3 4 | ●問題1:「陸蓮根」の読み<br> <?php echo ($_POST['q1'] == 'おくら') ? '正解です。' : '不正解です。'; ?> (答え:おくら)<br> ●問題2:「鹿尾菜」の読み<br> <?php echo ($_POST['q2'] == 'ひじき') ? '正解です。' : '不正解です。'; ?> (答え:ひじき)<br> |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- サンプルコード --> <h3>条件演算子(三項演算子)</h3> <?php echo (1) ? 'TRUE'."<br>\n" : 'FALSE'."<br>\n"; echo (1 == 1) ? 'TRUE'."<br>\n" : 'FALSE'."<br>\n"; echo (1 == 2) ? 'TRUE'."<br>\n" : 'FALSE'."<br>\n"; $a = 10; $b = 10; echo ($a === $b) ? $a*$b."<br>\n" : $a/$b."<br>\n"; ?> |
実行結果
条件演算子(三項演算子)
TRUE
TRUE
FALSE
100
TRUE
TRUE
FALSE
100
フォームを利用した問題形式の例
フォームを利用し、漢字の読みの問題を 条件演算子 を使用して作成したサンプルです。
question.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>問題</title> </head> <body> <form action="answer.php" method="post"> ●問題1:「陸蓮根」の読み<br> <input type="text" name="q1" size="30"><br> ●問題2:「鹿尾菜」の読み<br> <input type="text" name="q2" size="30"><br> <br> <input type="submit" value="回答する"> </form> </body> </html> |
answer.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>回答</title> </head> <body> ●問題1:「陸蓮根」の読み<br> <?php echo ($_POST['q1'] == 'おくら') ? '正解です。' : '不正解です。'; ?> (答え:おくら)<br> ●問題2:「鹿尾菜」の読み<br> <?php echo ($_POST['q2'] == 'ひじき') ? '正解です。' : '不正解です。'; ?> (答え:ひじき)<br> </body> </html> |
タグ(=記事関連ワード)
日付
公開日:2017年3月21日
最終更新日:2020年07月10日
最終更新日:2020年07月10日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpref-operators_if/trackback/