PHPでウェブの世界と繋がろう!
menu
ホーム > PHPの文法 > 6 制御文 > 6-4 条件演算子(三項演算子) 「? :」

6-4 条件演算子(三項演算子) 「? :」

Pocket

- 1 分ノート ! -

  • 「もし ~ なら ・・ する そうでなければ * * する」
    (条件式 ~ ) ? 真式 ・・  : 偽式 * * 
  • 条件式を評価し結果が「真(TRUE)」の場合は「?」の右辺の 式 を評価し、「偽(FALSE)」の場合は「:」の右辺の 式 を評価する
  • 条件式の結果は論理型で得る
  • 条件式の結果、文を実行するのではなく、式を評価することに注意
  • 複数の式を使うことはできない

条件演算子(三項演算子)
POINT
  • 「もし ~ なら ・・ する そうでなければ * * する」
    (条件式 ~ ) ? 真式 ・・  : 偽式 * * 
  • 条件式を評価し結果が「真(TRUE)」の場合は「?」の右辺の 式 を評価し、「偽(FALSE)」の場合は「:」の右辺の 式 を評価する
  • 条件式の結果は論理型で得る
  • 条件式の結果、文を実行するのではなく、式を評価することに注意
  • 複数の式を使うことはできない

条件演算子「? :」は、PHP唯一の三項演算子です。三項演算子とは被演算子(演算の対象となる値)を3つとる演算子のことです。

構文は

(条件式 ~ ) ? 真式 ・・  : 偽式 * * 

となります。

式(条件式)を評価して、結果が「真(TRUE)」の場合は「?」の右辺の式を評価し、「偽(FALSE)」の場合は「:」の右辺の式を評価します。

「 if(式)文 else 文 」との大きな違いは、式の結果を受け実行するのが文ではなく式ということです。式に対して式を評価します。また、複数の式を使うことはできません

PHPにおいて式とは、値があるもののことを言います。最も簡単な式は「リテラル値」や「定数」や「変数」です。例えば、「1」 とは 「1」 という値を持つ式となります。文字列の場合も「'Hello'」は「Hello」という値を持つ式です。これらは数値のリテラル値や文字列のリテラル値としてPHPから評価されます。

echo (1) ? "こんにちは<br/>\n"  : "さようなら<br/>\n"; 
echo (0) ? "こんにちは<br/>\n"  : "さようなら<br/>\n"; 

結果は

こんにちは
さようなら

となります。

「1」「0」「"こんにちは<br/>\n"」「"さようなら<br/>\n"」これはら値そのものを持つ式と評価されます。最も簡単な式の「リテラル値」としての扱いです。

PHPの式の詳細はこちらを参照下さい。

使用例

echo (1) ? 'TRUEです。' : 'FALSEです。';

結果は

TRUEです。

となります。

例の整数値「1」は1という値を出力する単純な式です。PHPではFALSEと見なされる以外はすべてTRUEと評価されます。「1」は式であり、「真(TRUE)」の論理値を返します。「'TRUEです。'」や「'FALSEです。'」は文字列の値を持つ式と評価されます。これらは最も単純な式である数値リテラルや文字列リテラルのリテラル値です。

echo (1 === 1) ? 'TRUEです。' : 'FALSEです。';

結果は

TRUEです。

となります。

例は比較演算子「===」を使用した真偽を求める式です。「===」は同一である場合に「真(TRUE)」を返します。この演算子は左辺と右辺のデータ型が同じであるかも調べます。演算子を使用すると値と値を組み合わせて複雑な式を作ることができます。演算子についてはこちらを参照下さい。

echo (1 > 2) ? 'TRUEです。' : 'FALSEです。';

結果は

FALSEです。

となります。

例は比較演算子「>」を使用した真偽を求める式です。「>」は左辺が右辺より大きい場合に「真(TRUE)」を返します。

$a = 10;
$b = 10;
echo ($a === $b) ? $a*$b : $a/$b;

結果は

100

となります。

例は比較演算子「===」を使用した真偽を求める式です。「*」と「/」は算術演算子の乗算(掛ける)と除算(割る)です。

サンプルコード

– サンプル Click Here ! –

<h3>条件演算子</h3>
<?php
echo (1) ? 'TRUE です。' : 'FALSE です。';
?>

<h3>条件演算子</h3>
<?php
echo (1 == 1) ? 'TRUE です。' : 'FALSE です。';
?>

<h3>条件演算子</h3>
<?php
echo (1 == 2) ? 'TRUE です。' : 'FALSE です。';
?>

<h3>条件演算子</h3>
<?php
$a = 10;
$b = 10;
echo ($a === $b) ? $a*$b : $a/$b;
?>
実行結果
条件演算子
TRUE です。

条件演算子
TRUE です。

条件演算子
FALSE です。

条件演算子
100

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2011年11月6日
最終更新日:2014年02月20日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-structures_sankou/trackback/