Почему ноль больше нуля?

Вот код:

    $value1 = 550;
    $value2 = 550;
    
    $dolg = $value1 - $value2;

    switch ($dolg) {
        case ($dolg > 0):
            print_r ( '<b>Долг клиента по оплате:</b> ' . $dolg . ' руб.' );
            break;

        case ($dolg < 0):
            print_r ( '<b>Переплата клиента:</b> ' . $dolg . ' руб.' );
            break;

        case ($dolg == 0):
            print_r ( '<b>Долг клиента отсутствует</b>' );
            break;

    }

Почему то срабатывает первый case и выводится "Долг клиента по оплате: 0 руб." Хотя по моей задумке должно выводится "Долг клиента отсутствует". Что я делаю не так? Спасибо заранее.

Версия PHP 7.4.33


Ответы (1 шт):

Автор решения: user7860670

В case ($dolg > 0) сначала производится вычисление выражения, а затем сравнение результата на равенство с агрументом switch. Вам нужен обычный if/else

if ($dolg > 0)
{
    print_r ( '<b>Долг клиента по оплате:</b> ' . $dolg . ' руб.' );
}
else if ($dolg < 0)
{
    print_r ( '<b>Переплата клиента:</b> ' . $dolg . ' руб.' );
}
else
{
    print_r ( '<b>Долг клиента отсутствует</b>' );
}

online compiler

→ Ссылка