ちょっと間違えていたので
こちらの方で内容を変えて書いています。こちらもご参考に
null合体演算子とは
null合体演算子(A ?? B)は、
Aが null
や undefined
の時に、Bを出力し、
非nullの時にはAを出力するものです。
例がundefinedやnullの場合の処理を考える時に便利です。
// undefinedなので、''が出力される echo $item ?? ''; // nullなので、''が出力される $item = null; echo $item ?? ''; // 非nullなので、10が出力される $item = 10; echo $item ?? '';
エルビス演算子(三項演算子)とは
エルビス演算子(?:)は、評価がtrueかによって分岐します。
三項演算子とも呼ばれます。
シンプルなif文を短く書いたり、見やすくするために使われたりしますが、
三項演算子を好まない人もいるので、チームメンバーと事前に使うかどうか決めておくとより良いです。
$item = 10; // isset($item)がtrueなので、$itemが出力される echo isset($item) ? $item : ''; // 上の式は下と一緒 if (isset($item)) { echo $item; } else { echo ''; } $item = 1; // ?と:の間を省略すると、 // $itemが1なので、trueと同等であることから、$itemが出力されます。 echo $item ?: ''; // 上の式は下と一緒 if ($item) { echo $item; } else { echo ''; }
それぞれの公式ドキュメント
null 合体演算子 (??)
この演算子は、もし第一オペランドが非 NULL の値であればそれを返し、 そうでない場合は第二オペランドを返します。
http://php.net/manual/ja/migration70.new-features.php
(expr1) ? (expr2) : (expr3) という式は、式1 が TRUE の場合に 式2 を、 式1 が FALSE の場合に 式3 を値とします。
式 expr1 ?: expr3 の結果は、expr1 が TRUE と同等の場合は expr1、 それ以外の場合は expr3 となります。