はじめに
今回は、Null合体演算子とNull合体代入演算子について、まとめました。
※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。
この記事の目的
Null合体演算子 ??
を調べていると、Null合体代入演算子 ??=
を知ったため、アウトプットします。
この記事の対象者
- PHPを学習されている初学者の方
-
??
って何?となっている方
この記事の内容
-
??
Null合体演算子(Null coalescing operator) -
??=
Null合体代入演算子(Null coalescing assignment operator) - 挙動の確認
1. ??
Null合体演算子(Null coalescing operator)
三項演算子やif文を短縮して書くことができます。
- 式であるため、return で参照返しするときは注意
- 演算子の優先順位が低いため、組み合わせで使う時は注意
- ネストで使用することができる
// 書き方
変数 = 対象 ?? 初期値;
// 上記と同様の三項演算子
変数 = isset(対象) ? 対象 : 初期値;
// 上記と同様のif文
if (isset(対象)) {
変数 = 対象;
} else {
変数 = 初期値;
}
// ネスト
$a = null;
$b;
$c = 0;
$d = 1;
var_dump($a ?? $b ?? $c ?? $d); // => 0
2. ??=
Null合体代入演算子(Null coalescing assignment operator)
式の中の値を使用し、その値をその式の結果とすることができます。
- Null合体演算子と同一の結果になる
// 書き方
対象 ??= 初期値;
// 上記と同様
対象 = 対象 ?? 初期値;
3. 挙動の確認
$value_1 = 1;
$a = $value_1 ?? '初期値';
$value_1 ??= '初期値';
var_dump($a); // => 1
var_dump($value_1); // => 1
$value_2 = 0;
$a = $value_2 ?? '初期値';
$value_2 ??= '初期値';
var_dump($a); // => 0
var_dump($value_2); // => 0
$value_3 = "0";
$a = $value_3 ?? '初期値';
$value_3 ??= '初期値';
var_dump($a); // => "0"
var_dump($value_3); // => "0"
$value_4 = "";
$a = $value_4 ?? '初期値';
$value_4 ??= '初期値';
var_dump($a); // => ""
var_dump($value_4); // => ""
$value_5 = null;
$a = $value_5 ?? '初期値';
$value_5 ??= '初期値';
var_dump($a); // => "初期値"
var_dump($value_5); // => "初期値"
$value_6;
$a = $value_6 ?? '初期値';
$value_6 ??= '初期値';
var_dump($a); // => "初期値"
var_dump($value_6); // => "初期値"
$array_1 = [];
$a = $array_1 ?? '初期値';
$array_1 ??= '初期値';
var_dump($a); // => []
var_dump($array_1); // => []
$array_2 = [0];
$a = $array_2 ?? '初期値';
$array_2 ??= '初期値';
var_dump($a); // => [0]
var_dump($array_2); // => [0]