¿Es este un mal patrón? (Cambiar dentro para / foreach loop)

Me encuentro escribiendo código como:

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

¿Hay una mejor manera de hacer esto? Me parece sucio, pero podría estar pensando demasiado.

La única otra alternativa que se me ocurre es una sentencia if para cada clave, que no parece ser mejor. Es decir. :

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

(o algo así)

Puedo publicar el código exacto si es necesario, pero este es el resumen general de lo que sucede. Por favor critique, pero recuerde que estoy buscando ayuda aquí. Entonces, si estoy haciendo algo sumamente malo, señálelo.

Respuestas a la pregunta(6)

Su respuesta a la pregunta