Codeworks Notes

 2025-02-20

PHP
PHP応用
バックエンド
プログラミング

三項演算子

基本構文まとめ

これから説明する内容をざっくりまとめたものです。

// 三項演算子
$piyo ? $hoge : fuga;
// 等価な式
if ($piyo) { $hoge; } else { $fuga; }

// Null合体演算子
$hoge ?? $fuga;
// 等価な式(1)
!isnull($hoge) ? $hoge : $fuga;
// 等価な式(2)
if (!isnull($hoge)) { $hoge; } else { $fuga; }

// エルビス演算子
$hoge ?: $fuga;
// 等価な式(1)
$hoge ? $hoge : $fuga;
// 等価な式(2)
if ($hoge) { $hoge; } else { $fuga; }

以下、くわしい説明をします。

三項演算子とは

三項演算子とは1つの演算式で3つの式(条件式・真の式・偽の式)を比較するためのものです。
メリットはシンプルな if 〜 else 文を1行で表すことができ、コードがすっきりする点です。

基本構文

条件式 ? 真の式 : 偽の式;

これは以下のコードと同じはたらきをします。

if (条件式) {
  真の式;
} else {
  偽の式;
}

例文を挙げます。

$a = 10;
$b = 5;
echo $a > $b ? 'aの方がでかい' : 'bの方がでかい';

// 実行結果: 'aの方がでかい'

if 〜 else 文だとこうなります。

$a = 10;
$b = 5;
if ($a > $b) {
  echo 'aの方がでかい';
} else {
  echo 'bの方がでかい';
}

// 実行結果: 'aの方がでかい'

三項演算子を使うとコードが短縮されて見やすくなりますね。

Null合体演算子

三項演算子に似ているものとして Null合体演算子というものがあります。
PHP7.0 から使えます。

基本構文

真の式 ?? 偽の式;

これは以下のコードと同じはたらきをします。

if (!isnull(真の式)) {
  真の式;
} else {
  偽の式;
}

三項演算子で書くとこうなります。

!isnull(真の式) ? 真の式 : 偽の式;

真の式が空ではない場合に真の式を出力できるので、isset() が大量に出てくるような場面ではコードがすっきり表現できることでしょう。

エルビス演算子

エルビス演算子なるものもあります。
PHP5.3 から使えます。

基本構文

真の式 ?: 偽の式;

これは以下のコードと同じはたらきをします。

if (真の式) {
  真の式;
} else {
  偽の式;
}

三項演算子で書くとこうなります。

真の式 ? 真の式 : 偽の式;

これは真の式が true の時に真の式を出力する、という部分を省略して書けるので、bool型で真偽判定を取る場合に使えます。

エルビス演算子の「?:」は ? がリーゼント、 : が目だそうで、エルビス・プレスリーの顔文字 ?: が由来だそうです。マジのマジだったので椅子から転げ落ちそうになるわ。