В PHP любое значение можно интерпретировать как истину (true) или ложь (false), особенно в условиях (if, while и т. д.).

📌 Таблица истинных и ложных значений в PHP

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