Области видимости переменных из разных case внутри одного switch (PHP)?
Тут дело не в том, что переменные в другом case не видны, а в том, что переменная локальная и после того, как $login или $password устанавливается происходит выход из функции.
Чтобы лучше понять "почему не видны переменные", нужно представить как думает машина и что switch

switch ($status) {
        case 1:
             //...
            break;
        case 2:
             //...
            break;
        case 3: 
            //...
            break;
    }

это подобие замены (когда используется break;) классического ветвления с использованием IF

if ($status == 1) {
    //...
} elseif ($status == 2) {
    //...
} elseif ($status == 3) {
    //...
} else { //это  замена default (не обязателен) из конструкций switch
    //...
}

Соответственно, если не выполнено (или выполнено) какое-то  условие, то его не может увидеть другое условие, потому-что эти условия как-бы разорваны между собой.