В 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 |
ifif (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) и выводит "Переменная ложная".