JackShcherbakov
@JackShcherbakov

Что такое ?? в php и почему нету нигде информации?

Здравствуйте! Из книге Дэвида Скляра (страница 158) по PHP узнал про некую нулеобъединяющюю операцию. Выглядит это "чудо" вот так:
print $a ?? "";
Автор говорит, что если не вставить эту штуку в код, то в случае, если в переменной ничего нет, то будет использована пустая строка. И тут что-то неладное, на какой черт мы ставим после ?? вот это ""? Я думал, что после ?? можно поставить свое значение, которое будет использоваться, но нет! Всегда используется пустая строка. Так это еще не все! Если вообще не использовать эти вопросы, то никакой ошибки не будет! А просто выведится пустая строка.

Эти три строки дают одинаковый результат при любых значениях $a:
print $a;
print $a ?? "";
print $a ?? "adsad";


А что самое странное, так это то, что даже в самой документации (!) я не могу найти никакой информации об этой загадочной штуковине.

Может быть автор перепутал языки программирования, когда писал эту книгу?

Заранее спаисбо!
UPD:
С переменной $a все работает. Но елси взять что-нибудь из формы, то работать не будет (например №$_POST["name])!
  • Вопрос задан
  • 162 просмотра
Решения вопроса 3
doublench21
@doublench21
Ответ написан
Комментировать
Inlore
@Inlore
https://secure.php.net/manual/ru/migration70.new-f...
Раздел "Оператор объединения с null" ("null coalesce operator")

...
Он возвращает первый операнд, если он задан и не равен NULL
...

Одинаковый результат у вас получается, потому что у $a есть значение и оно не равно NULL

Т.е. это всё равно что написать
if (isset($a) && $a !== NULL) {
  print $a;
} else {
  print 'adsad';
}
Ответ написан
solotony
@solotony
покоряю пик Балмера
php.net/manual/ru/language.operators.comparison.php

Оператор null coalescing

если значение первого операнда не null - то первый операнд, иначе - второй
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы