не выполняется последнее условие case в switch

Рейтинг: 0Ответов: 0Опубликовано: 01.07.2023

Всем доброго дня!

Суть вопроса, собственно, описана в названии темы. Самое интересное, я то же самое уже делал раньше, и все работало, но исходники не могу найти. Через if / elseif этот код тоже работает никак. В коде, приведенном ниже, не срабатывает последнее условие, которое должно срабатывать, когда массив имеет оба значения. Функция ident была создана для эксперимента и срабатывает правильно, но условию всё равно на мою функцию.

function ident($arr1) {
    if($arr1[0] != '' AND $arr1[1] != '') {
        return $arr1;
    }
}

$fields = [];

if (isset($_POST['status']) || isset($_POST['system'])){
    $fields = array($_POST['system'],$_POST['status']);
}

switch ($fields) {
    case $fields == '':
        $stmt = $conn->query("SELECT * FROM ecobus10");
        break;
    case $fields[0] !== '':
        $stmt = $conn->query("SELECT * FROM ecobus10 where cable_system LIKE '$fields[0]'");
        break;
    case $fields[1] !== '':
        if ($fields[1] == 'да') {
            $stmt = $conn->query("SELECT * FROM ecobus10 where ok is not null");
        }else{
            $stmt = $conn->query("SELECT * FROM ecobus10 where ok is null");
        }
        break;
    case $fields == ident($fields):
        if ($fields[1] == 'да') {
            $stmt = $conn->query("SELECT * FROM ecobus10 where ((cable_system LIKE '$fields[0]') AND (ok is not null))");
        }else{
            $stmt = $conn->query("SELECT * FROM ecobus10 where ((cable_system LIKE '$fields[0]') AND (ok is null))");
        }
        break;
}

Спасибо за внимание!

Ответы

Ответов пока нет.