В PHP любое значение можно интерпретировать как истину (true
) или ложь (false
), особенно в условиях (if
, while
и т. д.).
Значение | Истина (true ) или ложь (false )? |
Почему? |
---|---|---|
true |
✅ true |
Очевидно |
false |
❌ false |
Очевидно |
1 , -1 , любое ненулевое число |
✅ true |
В PHP любые ненулевые числа считаются true |
0 |
❌ false |
Ноль считается ложным |
"0" (строка с нулем) |
❌ false |
Исключение: строка "0" интерпретируется как false |
"" (пустая строка) |
❌ false |
Пустая строка — ложь |
"Hello" (любая непустая строка) |
✅ true |
Любая строка, кроме "0" , считается true |
[] (пустой массив) |
❌ false |
Пустой массив считается ложным |
["a", "b"] (непустой массив) |
✅ true |
Любой непустой массив считается true |
null |
❌ false |
null всегда ложное значение |
new stdClass() (объект) |
✅ true |
Любой объект считается true |
fopen("file.txt", "r") (ресурс) |
✅ true |
Открытый ресурс считается true |
if
if (0) {
echo "Это истина";
} else {
echo "Это ложь"; // Выполнится этот блок
}
if ("0") {
echo "Это истина";
} else {
echo "Это ложь"; // Выполнится этот блок
}
if ("Hello") {
echo "Это истина"; // Выполнится этот блок
}
$var = 0;
if (!$var) {
echo "Переменная ложная"; // Выведет это
}
if ($var === false) {
echo "Переменная именно false"; // Не выполнится
}
💡 Разница между false
и "ложными значениями"
false !== 0
, false !== ""
, false !== null
, но все они в if
ведут себя как ложные.
1️⃣ Какие из этих значений сработают как true
, а какие — как false
?
$values = [0, "0", "", "Hello", [], [1, 2], null, -5];
foreach ($values as $val) {
if ($val) {
echo "TRUE ";
} else {
echo "FALSE ";
}
}
❓ Предскажите результат перед запуском!
2️⃣ Напишите код, который проверяет, является ли переменная ложной (false
, 0
, ""
, null
) и выводит "Переменная ложная"
.