почему функция равна false?

101
04 июля 2021, 13:10

Есть функция

function fun() {
    echo 'a';
}

При сравнении

if ($z || fun()) {
    echo 'c';
}

Должно, по идее, выдать с, так как $z = false, а fun(), по идее, true но при этом if выдает false А при проверке

if (fun() == false) {
    echo 'false';
}

выдает false.

Почему эта функция

function fun() {
    echo 'a';
}

имеет значение false?

Answer 1

На самом деле, echo - это не функция (это языковая конструкция), echo принимает список аргументов и ничего не возвращает

echo 'a';

Не возвращает никакого значения, а значит результатом выполнения функции будет null

Answer 2

Для начала обратися к документации

Если конструкция return не указана, то функция вернет значение NULL.

Далее, вы выполняете сравнения

if (NULL) ...
if (NULL == false) ...

в обоих случаях NULL конвертируется в булевский тип и принимает значение false. Т.е. первое условие не выполнится (после преобразования получится if (false)). А второе условие выполнится (if (false == false))

Если использовать строгое сравнение

if (NULL === false) ...

то преобразования типов происходить не будет и условие не выполнится

READ ALSO
Последовательность отношений в view

Последовательность отношений в view

Создаю форум на laravel, использую стандартный набор (Eloquent, Blade) Задача такова: Есть разделы, у разделов категории, у категорий темы, у тем сообщенияНа...

93
вызов и вывод метода с свойством echo в ООП

вызов и вывод метода с свойством echo в ООП

Есть такая конструкция кода

112
не отправляется форма через ajax

не отправляется форма через ajax

При клике на кнопку,всплывает модалька бутстрапа с формой, после отправки формы появляется модалька "Спасибо, бла бла"без ajax форма работает,...

99
Не записывает данные в БД

Не записывает данные в БД

Собственно, пришёл с таким вопросом, почему не проходят данные в БД? Как ни пробовал, убирал одинарные кавычки, обычные, ставил даже там где...

89