LoginSignup
15
15

More than 5 years have passed since last update.

三項演算子と??(ハテナハテナ)と?:(ハテナ:)

Posted at

はじめに

この記事では、三項演算子とnull合体演算子(??),そしてエルビス演算子(?:)についてまとめています。

それぞれの違い

まずは、実際にコードをみてみます。


$x = null;
$y = 0;
$z = 1;

// 三項演算子
$a = $x ? 'true' : 'false'; // 'false'
$b = $y ? 'true' : 'false'; // 'false'
$c = $z ? 'true' : 'false'; // 'true'
$abc = $xyz ? 'true' : 'false'; // Notice Undefined variable

// エルビス演算子(実は三項演算子)
$a = $x ?: 'false'; // 'false'
$b = $y ?: 'false'; // 'false'
$c = $z ?: 'false'; // 1
$abc = $xyz ?: 'false'; // Notice Undefined variable

// null合体演算子
$a = $x ?? 'false'; // 'false'
$b = $y ?? 'false'; // 'false'
$c = $z ?? 'false'; // 1
$abc = $xyz ?? 'false'; // false

エルビス演算子と三項演算子は

三項演算子, エルビス演算子

この二つは、条件式が真の場合に評価される値が条件式そのものか、そうでないか、という点で異なっているだけです。
これらは、条件式がtrueかfalseか、が重要です。
条件式がundefinedの場合には、Noticeエラーが発生します。

// 三項演算子
【条件式】 ? 【trueの場合に評価される式】 : 【falseの場合に評価される式】

// エルビス演算子(二項演算子)
【条件式(trueの場合に評価される式)】 ?: 【falseの場合に評価される式】

null合体演算子

null合体演算子の場合に重要なのは、条件式がnullであるかどうかです。
undefinedの場合もnullという判定になるのでNoticeエラーが発生せずに値が返ってきます。



【条件式(nullでない場合に評価される式)】 ?? 【nullの場合に評価される式】

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15