не выполняется последнее условие case в switch
Всем доброго дня!
Суть вопроса, собственно, описана в названии темы. Самое интересное, я то же самое уже делал раньше, и все работало, но исходники не могу найти. Через 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;
}
Спасибо за внимание!
Источник: Stack Overflow на русском