Isso é um padrão ruim? (Mude para o loop for / foreach)

Eu me vejo escrevendo código como:

foreach($array as $key => $value) {
    switch($key) {
        case 'something':
            doSomething($value);
            break;
        case 'somethingelse':
            doSomethingElse($value);
            break;
    }
}

Existe uma maneira melhor de fazer isso? Parece sujo para mim, mas eu só poderia estar pensando nisso.

A única outra alternativa que posso pensar é uma declaração if para cada chave, que não parece melhor. Ou seja :

if($array[0] == 'something') {
    doSomething($array[0]);
}
if($array[1] == 'somethingelse') {
    doSomethingElse($array[1]);
}

(ou algo assim)

Eu posso postar o código exato, se necessário, mas este é o esboço geral do que acontece. Por favor critique, mas lembre-se de que estou procurando ajuda aqui. Então, se estou fazendo algo notoriamente errado, aponte-o.

questionAnswers(6)

yourAnswerToTheQuestion