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型で真偽判定を取る場合に使えます。
エルビス演算子の「?:」は ? がリーゼント、 : が目だそうで、エルビス・プレスリーの顔文字 ?: が由来だそうです。マジのマジだったので椅子から転げ落ちそうになるわ。