PHP で変数のデフォルト値を設定したい時
false の場合デフォルト値を使う
<?php $var = $foo ?: $bar; // 下記と同様 $var = $foo ? $foo : $bar;
?:
は三項演算子と同じ扱いで $foo
が false
扱いになる場合は $bar
が代入される
<?php $var = null ?: 'default'; // => 'default' $var = false ?: 'default'; // => 'default' $var = 0 ?: 'default'; // => 'default' $var = '' ?: 'default'; // => 'default' $var = [] ?: 'default'; // => 'default'
Null の場合デフォルト値を使う ??
(Null合体演算子)
PHP 7 からは左辺が null の場合は右辺を代入する ??
Null合体演算子 が使用できる
<?php $var = $foo ?? $bar; // 下記と同様 if (isset($foo)) { $var = $foo; } else { $var = $bar; }
?:
では デフォルト値になっていたものも null
でなければ使用される
<?php $var = null ?? 'default'; // => 'default' $var = false ?? 'default'; // => false $var = 0 ?? 'default'; // => 0 $var = '' ?? 'default'; // => '' $var = [] ?? 'default'; // => [] // $_POST で値が渡ってこなかった時とかにも使える $pram = $_POST['foo'] ?? 'default';
false
になるときデフォルト値を使いたい時は ?:
, 存在しない時にデフォルト値を使いたいときは ??
と言う感じ。
?:
が暗黙の型変換だから、基本的に ??
を使うのが良さそう。 ( PHP の empty()
はトラップが多そう…)
[参考]