null 合体演算子 (??) がシンタックスシュガーとして追加されました。 コードをシンプルに記述することができます。 この演算子は、左辺がnullでなければその値、左辺がnullなら右辺の値、両方nullならnull
// null合体演算子 ??
$var = 20;
echo $var ?? 10;
// 20
$var = null;
echo $var ?? 10;
// 10
//isset = nullかどうか判定
echo isset($var) ? $var : 10;
//Null合体代入演算子 変数がnullの時に代入する
$var ??= 10;
省略構文
$message = 'こんにちは';
print $message ? $message : 'ノーコメント';
//省略 式1がtrueに変換できる時は式1、そうでない時は式2を返す
print $message ?: 'ノーコメント';
//代入する場合
$message = $message ?: 'ノーコメント';
オブジェクト変数のメンバー(変数/メソッド)へのアクセス時
8.0以降追加
// null安全演算子 ?->
$dt = null;
print $dt?->format('Y年m月d日 g:i:s');
// 何も表示されない($dtがnullでもエラーにならない)
$obj?->hoge()?->foo()?->bar();
// 代入、参照は不可 nullになる可能性があるため
$obj?->hoge = '...'; //nullに代入はできない
$result = &$obj?->hoge; //参照渡し
宇宙船演算子
$a が $b より大きい場合は 1、
$a と $b が等しい場合は 0、
$a が $b より小さい場合は -1
をそれぞれ返す
関連
// 整数値
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮動小数点数値
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 文字列
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1