Для чего используется оператор "Null coalesce" (??)? - программирование

Для чего используется оператор "Null coalesce" (??)?

С выпуском новой версии PHP, PHP 7, появляются новые функции. среди этих новых функций есть оператор, с которым я не знаком. Null coalesce operator.

Что это за оператор и какие хорошие варианты использования?

4b9b3361

Ответ 1

Вы можете использовать его для инициализации переменной, которая может быть нулевой

оператор называется нуль-коалесцирующим оператором. Он возвращает левый операнд, если операнд не равен нулю; в противном случае он возвращает правый операнд.

Источник: https://msdn.microsoft.com/nl-nl/library/ms173224.aspx

(не зависит от языка)

Случай использования

Вы можете написать

$rabbits;

$rabbits = count($somearray);

if ($rabbits == null) {
    $rabbits = 0;
}

Вы можете использовать более короткие обозначения

$rabbits = $rabbits ?? 0;

Ответ 2

В соответствии с руководством PHP:

Оператор нулевой коалесценции (??) был добавлен в качестве синтаксического сахара для общего случая необходимости использования тройной комбинации с isset(). Он возвращает свой первый операнд, если он существует, и не является NULL; в противном случае он возвращает свой второй операнд.

// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalesces can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

Ответ 3

$username = $_GET['user'] ?? 'nobody'; 

совпадает с

$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

?? является тройным сокращением