Есть функция
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?
На самом деле, echo - это не функция (это языковая конструкция), echo принимает список аргументов и ничего не возвращает
echo 'a';
Не возвращает никакого значения, а значит результатом выполнения функции будет null
Для начала обратися к документации
Если конструкция return не указана, то функция вернет значение NULL.
Далее, вы выполняете сравнения
if (NULL) ...
if (NULL == false) ...
в обоих случаях NULL конвертируется в булевский тип и принимает значение false. Т.е. первое условие не выполнится (после преобразования получится if (false)). А второе условие выполнится (if (false == false))
Если использовать строгое сравнение
if (NULL === false) ...
то преобразования типов происходить не будет и условие не выполнится
Сборка персонального компьютера от Artline: умный выбор для современных пользователей