PHP7 ?? と?:の役割と区別

784 ワード

私たちはよくこのような判断コードを書きます.
//         
$a = isset($b) ? $b : $c;
//         
$a = !empty($b) ? $b : $c;

PHP 7は新語法糖があり、簡略化されている(PHPバージョンは7より大きくなければならない)
//         
$a = $b ?? $c; //     $a = isset($b) ? $b : $c;
//         
$a = $b ?: $c; //     $a = !empty($b) ? $b : $c;

彼らの違いは
  • null連結演算子 :?? 判定変数が存在しないかNULL
  • null条件演算子:?:変数が空の
  • であるか否かも判断する.
    $a = [];
    print_r($a ?? '    ');
    // []
    print_r($a ?: '    ');
    // '    '

    ?? NULLかどうかも判断します
    $a = null;
    print_r($a ?? '    ');
    //